Как запретить grep печатать одну и ту же строку несколько раз?

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

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

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

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

1
задан 5 October 2015 в 09:51

1 ответ

Используя 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 May 2018 в 16:57
  • 1
    ИМХО наиболее подходящим ответом является флаг -m. Я предлагаю вам поставить его в верхней части вашего ответа. Очень хороший ответ! – Sergiy Kolodyazhnyy 5 October 2015 в 20:37

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

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