如何在AWK中使用文件作为参考'到另一个

时间:2017-05-19 17:53:53

标签: text awk

我有file1就是这样,XLOC从1 - ~20 000

XLOC_013407 black   0.7015504883
XLOC_014674 black   -0.6747375792
XLOC_018639 black   -0.654810098
XLOC_014606 black   -0.6262770784
XLOC_015975 black   -0.6242929154

和file2是这样的,但是第一个文件的一小部分,但没有颜色值

XLOC_000509
XLOC_000556
XLOC_000657
XLOC_018639 
XLOC_005521
XLOC_005129
XLOC_001253

我想使用file2作为参考,打印file1的第1列和第2列中的相应值以产生输出

XLOC_018639 black

我知道基本的AWK,这是我认为我需要的伪代码

awk 'if $1 (from file2) == $1 (from file1) {print $1,$2 (from file1)}'  > outfile.txt 

显然这不会像以上一样有效 - 有人可以帮助我将其变成正确的代码吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

既然你提到file2很小,你会写:

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

使用NR==FNR我们将总记录索引与当前文件记录索引进行比较,因此仅对第一个文件(file2)执行第一个块。由于我们使用了next,因此我们跳过剩下的脚本,因此只对第二个文件执行另一个块(file1