Text 如何将AWK中的文件用作';参考';对另一个

Text 如何将AWK中的文件用作';参考';对另一个,text,awk,Text,Awk,我有这样的文件1,XLOC从1到20000 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 文件2是这样的,只是第一个文件的一小部分,但没有颜色值 XLOC_000509 XLOC_000556 XLOC_00

我有这样的文件1,XLOC从1到20000

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
文件2是这样的,只是第一个文件的一小部分,但没有颜色值

XLOC_000509
XLOC_000556
XLOC_000657
XLOC_018639 
XLOC_005521
XLOC_005129
XLOC_001253
我想使用file2作为参考,打印file1的第1列和第2列中的相应值,以生成输出

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

awk 'if $1 (from file2) == $1 (from file1) {print $1,$2 (from file1)}'  > outfile.txt 
显然,这不会像上面那样起作用-有人能帮我把它转换成正确的代码吗


谢谢

既然您提到
file2
很小,您可以这样写:

awk 'NR==FNR{a[$1];next}$1 in a{print $1, $2}' file2 file1
使用
NR==FNR
我们将总记录索引与当前文件记录索引进行比较,因此仅对第一个文件执行第一个块(
file2
)。因为我们使用了
next
,所以我们跳过了剩下的脚本,所以另一个块只对第二个文件(
file1

正确,如果效率是个问题(真的不应该对这么小的文件执行)然后,由于$1值似乎在按顺序增长,一旦file1中的$1值大于file2中最后一个$1,您就可以添加一个出口:
awk'NR==FNR{a[$1];max=$1;next}$1>max{exit}$1在{print$1,$2}file2 file1中
awk 'NR==FNR{a[$1];next}$1 in a{print $1, $2}' file2 file1