Awk 删除与黑名单数组匹配的行

Awk 删除与黑名单数组匹配的行,awk,printf,Awk,Printf,我有一个功能,它可以打印第三列与数组中的值匹配的行。 blacklist=('dog' 'cat' 'fish' 'african elephant') printf '%s\n' "${blacklist[@]}" | awk -F',' ' NR==FNR { array[$0] next } { for (val in array) { if ( index($3,val) ) {

我有一个功能,它可以打印第三列与数组中的值匹配的行。

blacklist=('dog'
'cat'
'fish'
'african elephant')

printf '%s\n' "${blacklist[@]}" |
awk -F',' '
    NR==FNR {
        array[$0]
        next
    }
    {
        for (val in array) {
            if ( index($3,val) ) {
                print
                next
            }
        }
    }
' - $file
文件:

dfd213,323,cat
90,65,dog
ddf,5hgf,hamster
jhg67,5f,fish
6h,ioo,indian elephant
5444h,fdh,african elephant
08,fd,mouse
09,dsd,macaw
cat
dog
fish
african elephant
hamster
indian elephant
mouse
macaw
输出:

dfd213,323,cat
90,65,dog
ddf,5hgf,hamster
jhg67,5f,fish
6h,ioo,indian elephant
5444h,fdh,african elephant
08,fd,mouse
09,dsd,macaw
cat
dog
fish
african elephant
hamster
indian elephant
mouse
macaw
如何将其改为打印不匹配的行?

想要的输出:

dfd213,323,cat
90,65,dog
ddf,5hgf,hamster
jhg67,5f,fish
6h,ioo,indian elephant
5444h,fdh,african elephant
08,fd,mouse
09,dsd,macaw
cat
dog
fish
african elephant
hamster
indian elephant
mouse
macaw

请注意,我以
separated

@tripleee的形式传递了数组:我猜现在看起来不错吧?重新开放?恐怕我看不出有什么改进。看起来OP不知道这些代码是如何工作的,并且要求提供免费的代码编写服务。这只是我在中提供的脚本的副本。请更新您的问题,以显示您试图完成新任务的内容,这样我们可以帮助您找出您误解的地方以及如何实现您的目标。是的。如果我理解正确,我需要编辑的行是
If(index($3,val))
我希望
If!=(索引($3,val))
可以工作,但不能。我不太明白双括号和逗号。我假设逗号表示它使用了两个值中的任何一个?