如何使用 awk 从一个文件到另一个文件多次获取值?

如何使用 awk 从一个文件到另一个文件多次获取值?

文件1:

01 999 234 432 666 
02 888 453 234 763
03 145 334 235 456
04 234 784 482 785
05 868 453 546 787

文件2:

01
01
02
03
03
05

因为我想在两个文件的第一列之间进行匹配并获得预期的输出,如下所示:

预期输出:

999 234 432 666
999 234 432 666
888 453 234 763
145 334 235 456
145 334 235 456
868 453 546 787

我尝试了下面的代码:

awk 'NR==FNR{a[$1]=$1; next} {if($1 in a) {print $2" "$3" "$4" "$5}}' file2 file1

但是我得到的是这样的:

999 234 432 666
888 453 234 763
145 334 235 456
868 453 546 787

那么如何使用 awk 获得预期的输出呢?

答案1

您需要从第一个文件构建查找表,然后从第二个文件对其进行索引 - 例如

$ awk 'NR==FNR {a[$1] = $2 FS $3 FS $4 FS $5; next} {print a[$1]}' file1 file2
999 234 432 666
999 234 432 666
888 453 234 763
145 334 235 456
145 334 235 456
868 453 546 787

或者,

join -o1.2,1.3,1.4,1.5 file1 file2

相关内容