Почему в некоторых случаях команда uniq -c возвращает дубликаты? - PullRequest
0 голосов
/ 06 мая 2018

Я пытаюсь 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 различает строки, скажем, "AAA", найденные в "GIRLAAA", "AAABOY", "GIRLAAABOY" и, следовательно, я получаю дубликаты.

Когда я делаю grep -F "AAA", все они возвращаются.

Буду признателен, если кто-нибудь поможет мне в этом. Я новичок в ОС Linux.

1 Ответ

0 голосов
/ 06 мая 2018

uniq исключает все, кроме одной строки в каждой группе из последовательных повторяющихся строк. Следовательно, обычный способ его использования - сначала пропустить ввод через sort. Вы этого не делаете, так что да, вполне возможно, что (непоследовательные) дубликаты останутся в выходных данных.

Пример:

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