从另一个unix文件中不匹配的文件中查找模式列表

从另一个unix文件中不匹配的文件中查找模式列表,unix,command-line,awk,grep,Unix,Command Line,Awk,Grep,我似乎无法对这个简单的问题绞尽脑汁。 我需要打印文件A中的所有图案,但不是int文件B 将fileA视为: aaa bbb ccc ddd ppppppppppppp_aaa_ppppppppppppp ppppppppppppp_ccc_ppppppppppppp ppppppppppppp_ddd_ppppppppppppp 并考虑Fielb为: aaa bbb ccc ddd ppppppppppppp_aaa_ppppppppppppp ppppppppppppp_ccc_pppp

我似乎无法对这个简单的问题绞尽脑汁。 我需要打印文件A中的所有图案,但不是int文件B

将fileA视为:

aaa
bbb
ccc
ddd
ppppppppppppp_aaa_ppppppppppppp
ppppppppppppp_ccc_ppppppppppppp
ppppppppppppp_ddd_ppppppppppppp

并考虑Fielb为:

aaa
bbb
ccc
ddd
ppppppppppppp_aaa_ppppppppppppp
ppppppppppppp_ccc_ppppppppppppp
ppppppppppppp_ddd_ppppppppppppp
我希望得到以下结果:

bbb
我试过了

grep -f -v fileA fileB
grep -F -v -f fileA fileB
但它似乎不起作用,因为没有打印任何内容

如何在unix命令中实现这一点

谢谢

试试这个:

#!/bin/bash
exec < fileA
while read line; do
    grep -q "$line" fileB || echo "$line"
done
#/bin/bash
exec
测试如下:

> cat fileA
ppppppppppppp_aaa_ppppppppppppp
ppppppppppppp_ccc_ppppppppppppp
ppppppppppppp_ddd_ppppppppppppp
> cat fileB
aaa
bbb
ccc
ddd
> awk -F'_' 'FNR==NR{a[$2]=$1;next}!(a[$0]){print}' fileA fileB
bbb
> 

您可能需要阅读文件A中的每一行,检查它是否出现在文件B中(单独调用
grep
),并进行适当的报告。有一些选项和技术可以抑制来自
grep
命令的噪音。我建议不要使用
count
等。只需说
grep-q“$line”fileB | | echo“$line”
@devnull-非常好。你应该把它作为另一个答案贴出来。