替换2个文件之间的值

时间:2014-07-26 16:00:54

标签: replace awk

我想用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

坦克家伙!

4 个答案:

答案 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

另一位使用sedcat

{ sed -n '1,2p; 4q'; cat file1.txt; cat; } < file2.txt