【问题标题】:Why does uniq -c command return duplicates in some cases?为什么 uniq -c 命令在某些情况下会返回重复项?
【发布时间】:2018-05-06 20:26:35
【问题描述】:

我正在尝试 grep 查找文件中不存在于另一个文件中的单词

grep -v -w -i -r -f "dont_use_words.txt" "list_of_words.txt" >> inverse_match_words.txt


uniq -c -i inverse_match_words.txt | sort -nr

但我在uniq 命令中得到重复值。为什么会这样?

我想知道这是否可能是因为 grep 区分字符串,例如在“GIRLAAA”、“AAABOY”、“GIRLAAABOY”中找到的“AAA”,因此我最终得到了重复项。

当我执行grep -F "AAA" 时,所有这些都会返回。

如果有人可以帮助我解决这个问题,我将不胜感激。我是 Linux 操作系统的新手。

【问题讨论】:

  • 您能否通过示例解释您所看到的与您期望看到的? uniq 用于文件中的重复行,这是一个单独的单词列表吗?

标签: linux ubuntu grep uniq


【解决方案1】:

uniq 消除每组连续行重复行中除一行之外的所有行。因此,使用它的常规方法是首先通过sort 传递输入。您没有这样做,所以是的,(非连续的)重复项完全有可能保留在输出中。

例子:

grep -v -w -i -f dont_use_words.txt list_of_words.txt \
  | sort -f \
  | uniq -c -i \
  | sort -nr

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-27
    • 2014-10-05
    • 2017-03-27
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    相关资源
    最近更新 更多