2016-02-12 86 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