Linux shell命令将文本数据从文件复制到另一个文件

时间:2015-11-16 08:13:01

标签: linux shell text command

file_1内容:
aaa 111 222 333
bbb 444 555 666
ccc 777 888 999

file_2内容:
DDD
EEE
fff

如何仅将文件的一部分从file_1复制到file_2
以便file_2成为:

ddd 111 222 333
eee 444 555 666
fff 777 888 999

1 个答案:

答案 0 :(得分:2)

尝试使用awk:

awk 'NR==FNR{a[FNR]=$2FS$3FS$4;next} {print $0, a[FNR]}' file_1 file_2

说明:

NR是当前输入行,FNR是当前文件中的输入行数,您可以通过

看到
$ awk '{print NR,FNR}' file_1 file_2
1 1
2 2
3 3
4 1
5 2
6 3

因此,条件NR==FNR仅在阅读第一个文件时才为真,而当$2$3$4列保存时在a[FNR]。阅读file_1后,条件NR==FNR变为false并执行了阻止{print $0, a[FNR]},其中$0file_2中的整行。