2013-02-05 45 views
-1

我有兩個txt文件,FILE1.TXT和FILE2.TXT。 他們都有一個單一的字符串爲每一行。 file1.txt中的字符串是uniqe(無重複),以及file2.txt中的字符串。 這些文件具有不同數量的字符串。對於如果它存在於FILE2.TXT FILE1.TXT檢查每一個字符串,然後做一些事情

file1.txt     file2.txt 

FFF      AAA 
GGG      BBB 
ZZZ      CCC 
          ZZZ 

我想比較這些文件,這樣在FILE1.TXT每個字符串,如果它存在FILE2.TXT比它的確定。如果沒有,就寫在另一個文件(file3.txt)該字符串

在這個例子中,file3.txt是:

file3.txt 

FFF 
GGG 

我想使用的命令shell,做這樣的事情:

cat file1.txt | while read a; do something on file2.txt ... 

但這不是強制性的。

回答

1

grep的,參見手冊頁,特別是-f選項。

grep -vf file2.txt file1.txt 
0

最好的辦法是從文件2中讀入輸入內容,將它放入一個排序列表(甚至更好,一個平衡的搜索樹),然後當你從file1的每一行讀入時,通過樹或對列表執行二進制搜索以查找字符串是否存在。

的想法是,你想要做處理一次,以允許值容易列表檢查成爲可能。將它們放在二叉搜索樹中意味着您首先將它與列表2中的詞(按字母順序排列)進行比較,如果它位於它之前,則將左分支(其中包含剛剛比較的詞前面的詞)如果使用列表,則查看列表中間的單詞,然後可以從列表中刪除一半剩餘列表考慮每次迭代,這意味着你只需要做日誌n步檢查每個在列表1的話對n個單詞的列表2。

相關問題