我想做类似的事情
if ($2 in another file) { print $0 }
假设我有文件 A.txt 其中包含
aa
bb
cc
我有B.txt之类的
00,aa
11,bb
00,dd
我要打印
00,aa
11,bb
我如何在 awk 中测试它?我不熟悉一次处理两个文件的技巧。
最佳答案
你可以使用这样的东西:
awk -F, 'NR == FNR { a[$0]; next } $2 in a' A.txt B.txt
这会将 A.txt
中的每一行保存为数组 a
中的键,然后打印 B.txt
中第二个字段在数组中。
NR == FNR
是将传递给 awk 的第一个文件作为目标的标准方法,因为 NR
(总记录数)仅等于 FNR
(当前文件的记录号)为第一个文件。 next
跳到下一条记录,因此在第二个文件之前永远不会到达 a 部分中的 $2。
关于linux - 如何使用 awk 测试列值是否在另一个文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35734197/