Shell脚本 - 比较文本行,删除匹配项

时间:2010-04-23 03:53:16

标签: shell text scripting diff compare

我已经做了一些搜索,但是找不到我想要的东西,特别是。

我有两个文件:“a.txt”,“b.txt”。

每个都包含一个电子邮件地址列表,以换行符分隔。

对于“a.txt”中的所有行,我需要在“b.txt”中的任意位置检查匹配项。如果是这样,则需要删除“a.txt”中的电子邮件地址。

(或者,如果更容易,可以使用输出创建新文件“c.txt”。)

我正在使用Mac OS X,所以我正在寻找可以提供帮助的shell脚本,或者指出我将如何构建脚本。谢谢你的帮助。

4 个答案:

答案 0 :(得分:3)

grep -F -x -f b.txt -v a.txt > c.txt

或等同地

fgrep -x -f b.txt -v a.txt

答案 1 :(得分:2)

使用comm这样的命令:

cat a.txt | sort > a2.txt
cat b.txt | sort > b2.txt
comm -23 a2.txt b2.txt > c.txt

答案 2 :(得分:0)

awk 'FNR==NR{_[$1];next}(!($1 in _))' b.txt a.txt > c.txt

答案 3 :(得分:0)

我喜欢grep / fgrep的答案,但这里有另一个cat / sort选项:

cat a.txt b.txt | sort -u > c.txt