Как препятствовать тому, чтобы grep печатал ту же строку многократно?

Если я grep файл, содержащий следующее:

These are words
These are words
These are words
These are words

... для слова These, это распечатает строку These are words четыре раза.

Как я могу препятствовать тому, чтобы grep печатал повторяющиеся строки несколько раз? Иначе, как я могу управлять выводом grep для удаления дублирующихся строк?

13
задан 4 October 2015 в 23:51

2 ответа

Философия Unix состоит в том, чтобы иметь инструменты, которые делают одно и делают их хорошо. В этом случае grep - это инструмент, который выделяет текст из файла. Чтобы выяснить, есть ли дубликаты, нужно отсортировать текст. Чтобы удалить дубликаты, используется опция -u для sort. Таким образом:

grep These filename | sort -u

sort имеет много вариантов: см. man sort. Если вы хотите сосчитать дубликаты или использовать более сложную схему для определения того, что является или не является дубликатом, направьте вывод сортировки в uniq: grep These filename | sort | uniq и см. man uniq` для вариантов.

20
ответ дан 23 November 2019 в 03:17

Используя grep и дополнительный переключатель, если Вы ищете только единственную строку

grep -m1 'These' filename
<час>

От man grep

-m NUM, --max-count=NUM
        Stop reading a file after NUM matching lines.  If the input is
        standard input from a regular file, and NUM matching lines are
        output, grep ensures that the standard input is positioned  to
        just  after  the  last matching  line  before exiting, regardless
        of the presence of trailing context lines.  This enables a calling
        process to resume a search.  When grep stops after NUM matching
        lines, it outputs any trailing context lines.  When the -c or
        --count option is also used, grep does not output a count greater
        than NUM.  When the -v or --invert-match option is also used, grep
        stops after outputting NUM non-matching lines.

или используете awk ;)

awk '/These/ {print; exit}' foo
1
ответ дан 23 November 2019 в 03:17

Другие вопросы по тегам:

Похожие вопросы: