从另一个unix文件中不匹配的文件中查找模式列表
我似乎无法对这个简单的问题绞尽脑汁。 我需要打印文件A中的所有图案,但不是int文件B 将fileA视为:从另一个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
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-非常好。你应该把它作为另一个答案贴出来。