【问题标题】:Using uniq to compare 2 dictionaries使用 uniq 比较两个字典
【发布时间】:2016-02-12 05:08:44
【问题描述】:

所以我有两个词典要比较(美式英语和英式英语)。

如何使用 uniq 命令计算 (-c) 美式英语或英式英语中有多少个单词,但不能同时计算?

另外,我如何计算出现在不同词典中的一个词典的单词出现次数?

只是想了解 uniq 在更复杂的层面上是如何工作的。任何帮助表示赞赏!

【问题讨论】:

  • grep 将在这里提供帮助。要查找常用词,请使用grep -f american_dict british_dict | wc -l。要获得其他结果,您可以使用 grep 的 -v 选项。

标签: linux bash dictionary terminal uniq


【解决方案1】:

使用comm 命令代替uniq。它会查找两个文件之间共有的行,或者是其中一个文件所独有的行。

这会计算一个字典中的所有单词,但不能同时计算两个单词

comm -3 american british | wc -l

这会计算两个字典中的单词:

comm -12 american british | wc -l

默认情况下,comm 显示仅在第 1 列中的第一个文件中的行,仅在第 2 列中的第二个文件中的行,以及在第 3 列中的两个文件中的行。然后您可以使用-[123] 选项告诉它忽略指定的列。所以-3 只显示第 1 列和第 2 列(每个文件中的唯一词),而 -12 只显示第 3 列(常用词)。

它需要对文件进行排序,我假设您的字典文件是这样的。

您也可以使用 unique 来实现。它有选项-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

【讨论】:

  • 您可以使用进程替换。代替american british,使用<(sort american) <(sort british)。如果您不理解,请参阅 bash 手册中的说明。 gnu.org/software/bash/manual/html_node/…
  • 感谢您的帮助 Barmar 我现在明白了。
猜你喜欢
  • 1970-01-01
  • 2017-08-21
  • 2016-10-22
  • 2012-05-10
  • 1970-01-01
  • 2022-07-22
  • 1970-01-01
  • 2014-03-03
  • 1970-01-01
相关资源
最近更新 更多