我想用file_1
的前两行替换file_2的第三行和第四行*输入:
file_1
what's your name?I am jo
how are you?I am all right
file_2:
introduction
what's your name?
how are you?
this is jo's file
*期望的输出:
introduction
what's your name?I am jo
how are you?I am all right
This is jo's file
坦克家伙!
答案 0 :(得分:1)
如果你可以假设file1只包含两行,这很简单:
sed -e '3rfile1' -e '3,4d' file2
如果你不能做出这个假设,那么使用sed来准备一个满足这个约束条件的新文件:
sed -n 1,2p file1 > file1.tmp
如果要使用内容覆盖file2,可以使用sed -i
,但请注意,这不会适用于sed
的所有版本。
答案 1 :(得分:1)
awk '
NR==FNR { a[NR+2] = $0; next }
{ print (FNR in a ? a[FNR] : $0) }
' file1 file2
上述唯一的假设是来自file1的行与目标文件的偏移量为2。
答案 2 :(得分:0)
试试这个:
awk 'NR==FNR{if(FNR<3)a[NR]=$0;next}FNR==3||FNR==4{$0=a[FNR-2]}7' file1 file2
答案 3 :(得分:0)
使用awk
:
awk 'NR == FNR { a[i++] = $0; next; } FNR == 3 { $0 = a[0] } FNR == 4 { $0 = a[1] } 1' file1 file2
另一位使用sed
和cat
:
{ sed -n '1,2p; 4q'; cat file1.txt; cat; } < file2.txt