我想制作一个输出文件,其中排除输入文件第 3 列中存在的另一个文件中具有数字的行。
为了包含第 3 列中带有数字的行,我使用了这个脚本(在 Guru 的帮助下):
awk 'NR==FNR{a[$1];next}($3 in a)' extract.file input.file > output file
但现在我不想将带有数字的行复制到输出文件中。
举个例子:我有 extract.file :
123
689
456
和 input.file 与
1 AB 123 home 123
1 AC 568 cat 123
1 BC 689 dog 565
1 BB 456 car 456
我想要一个结果文件,其中仅包含:
1 AC 568 cat 123
有谁知道如何更改脚本或有另一个可以解决此问题的脚本?
答案1
否定条件:
awk 'NR==FNR{a[$1];next}!($3 in a)' extract.file input.file
答案2
( x in array ) 返回一个值,因此要执行“不在数组中”,您可以这样做:
awk 'NR==FNR{a[$1];next}($3 in a ==0)' extract.file input.file
这也有效。