加入两个文件的第一列

问题描述:

如何在每个文件的第一列加入两个文件?加入两个文件的第一列

文件1:

116 
116 
116 
116 
116 
117 
117 
117 
117 
117 

文件2:

1 37.8378378378378 
2 30.5009605438156 
3 35.4106079490375 
4 25.6565656565657 
..... 
..... 
116 49.4073275862069 
117 25.8182578688696 
118 36.1389759665622 
119 36.7218282111899 
120 55.1587301587302 

我想在这两个文件中匹配第一列,并打印这样的:

116 49.4073275862069 
116 49.4073275862069 
116 49.4073275862069 
116 49.4073275862069 
116 49.4073275862069 
117 25.8182578688696 
117 25.8182578688696 
117 25.8182578688696 
117 25.8182578688696 
117 25.8182578688696 
+0

$加入文件? #文件必须先排序,所以$排序-o文件2文件2 – DigitalRoss 2013-03-04 20:38:11

尝试这一个班轮:

awk 'NR==FNR{a[$1]=$2;next}$1 in a{print $1,a[$1]}' file2 file1 
+0

谢谢你的工作 – abh 2013-03-04 20:43:58

+0

我欢迎,.. – Kent 2013-03-05 00:26:11

为此,您可以简单地用join

join <(sort file1) <(sort file2) 
+0

你将如何指定在哪些列做到这一点? – 2014-03-20 18:57:32

+0

@АртёмЦарионов使用'-j'作为'-1'和'-2'两个文件中的相同字段。阅读“男人加入”。 – 2014-03-20 19:24:00

+0

我认为在对连接进行排序时需要小心,您需要确保排序在第一列上完成http://superuser.com/questions/33362/how-to-unix-sort-by-one -column只 – par 2017-01-05 15:56:54