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

时间:2013-11-22 04:49:44

标签: unix command-line awk grep

我似乎无法绕过这个简单的问题。 我需要打印fileA中的所有模式,但不打印int fileB。

将fileA视为:

aaa
bbb
ccc
ddd

并将fileB视为:

ppppppppppppp_aaa_ppppppppppppp
ppppppppppppp_ccc_ppppppppppppp
ppppppppppppp_ddd_ppppppppppppp

我想要以下结果:

bbb

我试过了

grep -f -v fileA fileB
grep -F -v -f fileA fileB

但似乎无法正常打印。

如何在unix命令中实现此目的?

谢谢

2 个答案:

答案 0 :(得分:1)

试试这个:

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

答案 1 :(得分:1)

awk -F'_' 'FNR==NR{a[$2]=$1;next}!(a[$0]){print}' fileB fileA

测试如下:

> 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
>