文件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