在shell中怎样将一个文件的内容插入到另一个文件

时间:2021-06-10 19:53:07
在shell中 我想将一个文件的内容添加到另一个文件的指定行:
例如: 
文件A.txt内容:
xiao ming
xiao li

B.txt内容:
good
people
animal
将A.txt插入到B.txt的指定行 比如第2行,B.txt变为(或者将结果输入到第三个文件如C.txt也行):
good
xiao ming
xiao li
people
animal
顺便问一下,怎样才能删除指定行?
到底怎样才能实现啊?谢谢了!!!期待ing....

10 个解决方案

#1


打开B.txt
将光标定位到指定行
输入    :r A.txt
可以将A.txt的所有内容追加到光标行一下

#2


sed 和 awk 都能满足你的要求。

#3


sed我试了一下,只能加入一行,其余的就不行了。我也找不出怎样才能调用sed插入多行!
能不能给点具体的代码呀?

#4


引用 1 楼 MYNAMEISFAN 的回复:
打开B.txt 
将光标定位到指定行 
输入    :r A.txt 
可以将A.txt的所有内容追加到光标行一下

=======================================
我说的是在shell批处理中,而不是操作单个文件。

#5


帮顶!!!

#6


引用 3 楼 xuexi_123 的回复:
sed我试了一下,只能加入一行,其余的就不行了。我也找不出怎样才能调用sed插入多行! 
能不能给点具体的代码呀? 

用循环反复插入一行不行吗?

#7





文件不能从中间写入,能随意位置读出.





除非全部读到内存.

#8


sed 5r A.txt B.txt > C.txt 这一语句只能实现将A添加到B的头部。
怎样设置才能将A.txt添加到B.txt的指定行,然后定向到C.txt

#9


#!/bin/bash
echo "please enter the number of insert line:"
read numberLine
x=`sed -e 's/ /;/g' A.txt`
echo ${x} > A.tem
record=`sed -e 's/ /./g' A.tem`
sed -e ${numberLine}a${record} B.txt >B.tem
sed -e 's/;/ /g' -e 's/\./\n/g' B.tem | tee >C.txt
rm -f A.tem B.tem

#10


sed -e '2d' profile          
#删除profile文件的第二行

sed -e '/^people/d' profile  
#删除profile文件中以people开头的行

#1


打开B.txt
将光标定位到指定行
输入    :r A.txt
可以将A.txt的所有内容追加到光标行一下

#2


sed 和 awk 都能满足你的要求。

#3


sed我试了一下,只能加入一行,其余的就不行了。我也找不出怎样才能调用sed插入多行!
能不能给点具体的代码呀?

#4


引用 1 楼 MYNAMEISFAN 的回复:
打开B.txt 
将光标定位到指定行 
输入    :r A.txt 
可以将A.txt的所有内容追加到光标行一下

=======================================
我说的是在shell批处理中,而不是操作单个文件。

#5


帮顶!!!

#6


引用 3 楼 xuexi_123 的回复:
sed我试了一下,只能加入一行,其余的就不行了。我也找不出怎样才能调用sed插入多行! 
能不能给点具体的代码呀? 

用循环反复插入一行不行吗?

#7





文件不能从中间写入,能随意位置读出.





除非全部读到内存.

#8


sed 5r A.txt B.txt > C.txt 这一语句只能实现将A添加到B的头部。
怎样设置才能将A.txt添加到B.txt的指定行,然后定向到C.txt

#9


#!/bin/bash
echo "please enter the number of insert line:"
read numberLine
x=`sed -e 's/ /;/g' A.txt`
echo ${x} > A.tem
record=`sed -e 's/ /./g' A.tem`
sed -e ${numberLine}a${record} B.txt >B.tem
sed -e 's/;/ /g' -e 's/\./\n/g' B.tem | tee >C.txt
rm -f A.tem B.tem

#10


sed -e '2d' profile          
#删除profile文件的第二行

sed -e '/^people/d' profile  
#删除profile文件中以people开头的行