2010-04-23 100 views
5

我已經完成了一些搜索,但是找不到我之後的具體內容。Shell腳本 - 比較文本行,刪除匹配項

我有兩個文件:「a.txt」,「b.txt」。

每個都包含一個由換行符分隔的電子郵件地址列表。

對於「a.txt」中的所有行,我需要檢查「b.txt」中任何地方的匹配。如果是這樣,則需要刪除「a.txt」中的電子郵件地址。

我使用的是Mac OS X的,所以要尋找一個shell腳本,可以幫助(或者,一個新的文件「c.txt」可以與輸出,如果這是更容易。創建)或者指導我如何構建腳本。謝謝你的幫助。

回答

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

,或者等價地,

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

非常感謝所有幫助過這個的人。我使用了這個特別的提示,但非常感謝大家的幫助。 – SirRatty 2010-04-23 04:35:31

2

使用comm命令是這樣的:

cat a.txt | sort > a2.txt 
cat b.txt | sort > b2.txt 
comm -23 a2.txt b2.txt > c.txt 
0
awk 'FNR==NR{_[$1];next}(!($1 in _))' b.txt a.txt > c.txt 
0

我喜歡的grep/fgrep一樣的答案,但這裏是另一個貓/排序選項:

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

這不是OP正在尋找的東西。 – ghostdog74 2010-04-23 04:27:31

+0

oops。你是對的;我看完帖子完全錯了。對不起SirRatty! – 2010-04-23 04:31:57