删除文件中包含特定单词的行

删除文件中包含特定单词的行

我想制作一个输出文件,其中排除输入文件第 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

这也有效。

相关内容