我想使用 shell 脚本将一个文件中的一行粘贴到第二个文件的特定行。
我有 2 个文件 -file1
和file2
. 我想粘贴第 5 行,file1
使其显示为第 7 行file2
,其中所有行file2
也出现在输出中。
当然,有多种方法可以做到这一点。
awk
awk 'NR == 5 { line5 = $0 }
FNR != NR { print; if (FNR == 6) print line5 }' file1 file2
NR 为超记录数;脚本的第一行保存file1
变量中的第 5 行line5
。该FNR != NR
条件适用于读取第二个文件;它打印该行,如果第二个文件中的行号是 6,它也会打印line5
.
sed
sed -f <(sed -e '1,4d; 6,$d; x; s/.*/6a\\/;p; x' file1) file2
这使用bash
进程替换。sed
进程替换中的脚本删除了file1
. 对于剩下的行,第 5 行,它交换模式空间和保持空间,编辑保持空间使其包含6a\
并打印它,然后再次交换模式空间和保持空间,并(隐式)打印原始行。因此,它会生成一个脚本,例如:
6a\
All important line 5
这被提供给从第 6 行之后sed
添加第 5行的第二个(外部) 。file1
file2
file1
Garbage line 1
Garbage line 2
Garbage line 3
Garbage line 4
All important line 5
Garbage line 6
Garbage line 7
Garbage line 8
Garbage line 9
file2
This is line 1 in file2
This is line 2 in file2
This is line 3 in file2
This is line 4 in file2
This is line 5 in file2
This is line 6 in file2
This is line 7 in file2
This is line 8 in file2
This is line 9 in file2
This is line 1 in file2
This is line 2 in file2
This is line 3 in file2
This is line 4 in file2
This is line 5 in file2
This is line 6 in file2
All important line 5
This is line 7 in file2
This is line 8 in file2
This is line 9 in file2