我需要一些帮助:
我有file1:
ID
100
102
103
104
108
109
112
.
.
.
和file2:
ID [] p1 p2
100 2.5 3.0 2.0
101 2.0 4.0 3.0
102 2.6 4.0 2.5
103 2.3 2.0 NA
104 2.3 2.0 2.0
105 3.5 2.8 2.0
106 1.7 NA 3.2
107 5.0 4.0 4.0
108 3.2 2.0 4.0
109 2.9 1.0 1.5
110 5.0 NA NA
111 2.9 4.0 4.0
112 3.1 2.5 2.0
.
.
.
我想将这两个文件粘贴到file3中,如下所示:
ID [] p1 p2
100 2.5 3.0 2.0
102 2.6 4.0 2.5
103 2.3 2.0 NA
104 2.3 2.0 2.0
108 3.2 2.0 4.0
109 2.9 1.0 1.5
112 3.1 2.5 2.0
.
.
.
基本上,将字段2,3,4中的数据从file2粘贴到file1,考虑file1和file2中的field1中的同意。
我尝试过一些带有NR == NFR的awk命令,但我只是输出了file1的内容,然后是file2的内容......
有任何帮助吗?也欢迎使用剪切和粘贴的Unix命令
答案 0 :(得分:6)
您确实可以使用awk
:
awk 'NR==FNR{a[$1]=1} NR>FNR && a[$1]' file1 file2
NR==FNR{a[$1]=1}
a
数组填充了file1的内容。
NR>FNR && a[$1]
),则 $1
正在打印file2行。
答案 1 :(得分:3)
如果您想使用加入,您只需执行以下操作:
join file file2
或者,如果输入是制表符分隔的,则使用bash:
join -t $'\t' file1 file2
答案 2 :(得分:3)
更惯用的awk
解决方案是:
awk 'NR==FNR{id[$1];next}$1 in id' file1 file2 >file3
<强>输出强>
ID [] p1 p2
100 2.5 3.0 2.0
102 2.6 4.0 2.5
103 2.3 2.0 NA
104 2.3 2.0 2.0
108 3.2 2.0 4.0
109 2.9 1.0 1.5
112 3.1 2.5 2.0
<强>参考文献:强>