2016-02-12 84 views
1

所以我有兩個字典比較(美國英語與英國英語)。使用uniq來比較2個字典

如何使用uniq命令計算(-c)美式英語或英式英語中有多少單詞,但不是兩種都有?

另外,如何計算出現在不同字典中的一本詞典的單詞出現次數?

試圖瞭解uniq如何在更復雜的層面上工作。任何幫助表示讚賞!

+0

'grep'將在這裏幫助。要找到常用詞語,請使用'grep -f american_dict british_dict | wc -l'。要獲得其他結果,您可以使用grep的-v選項進行遊戲。 –

回答

3

而不是uniq,使用comm命令爲此。它找出兩個文件之間共同的行,或者對於一個或另一個文件是唯一的。

這個計算所有那些在一個字典中的單詞,但不能同時

comm -3 american british | wc -l 

這種計算是在兩個字典的話:

comm -12 american british | wc -l 

默認情況下,comm表明是線僅在第1列中的第一個文件中,僅在第2列中的第二個文件中的行以及第3列中的兩個文件中的行。然後可以使用-[123]選項來指示它省略指定的列。因此-3只顯示第1列和第2列(每個文件中的唯一字),而-12只顯示第3列(常用字)。

它要求對文件進行排序,我假設你的字典文件是。

你也可以做到獨一無二。它有選項-u只顯示一次出現的行,而-d只顯示重複的行。

sort american british | uniq -u | wc -l # words in just one language 
sort american british | uniq -d | wc -l # words in both languages 
+0

您可以使用流程替換。而不是'美國英國',使用'<(排序美國)<(排序英國)'。如果你不明白,在bash手冊中有解釋。 http://www.gnu.org/software/bash/manual/html_node/Process-Substitution.html#Process-Substitution – Barmar

+0

感謝您的幫助Barmar我現在明白了。 – MMM