Как grep '---' в Linux? grep: непризнанная опция '---'

У меня есть недавно установленное веб-приложение. В этом случае выпадаете, где один параметр ---. Я хочу изменить это на All. Поэтому я перешел к папке приложения и попробовал команду ниже.

grep -ir '---' .

Я получаю ошибку ниже.

grep: unrecognized option '---'
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.

Учитывая, что я использую

Distributor ID: Ubuntu
Description:    Ubuntu 10.04.4 LTS
Release:    10.04
Codename:   lucid

Как grep '---' в Linux?

Ответ 1

Это происходит потому, что grep интерпретирует --- как опцию вместо того, чтобы искать текст. Вместо этого используйте --:

grep -- "---" your_file

Таким образом вы сообщите grep, что остальная часть не является параметром командной строки.

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

  • используйте grep -e (см. решение Kent, поскольку я добавил его, когда он уже опубликовал его, до сих пор не заметил):

  • используйте awk (см. решение anubhava) или sed:

    sed -n '/---/p' file
    

-n предотвращает sed от печати строк (его действие по умолчанию). Затем /--- соответствует тем строкам, в которых --- и /p заставляет их печатать.

Ответ 2

используйте параметр grep -e, это правильный вариант для вашего требования:

   -e PATTERN, --regexp=PATTERN
          Use PATTERN as the pattern.  This can be used to specify multiple search patterns, or to protect a pattern beginning with a hyphen (-).  (-e is specified
          by POSIX.)

, чтобы защитить шаблон, начинающийся с дефиса (-)

Ответ 3

Другой способ - вывести каждый - с обратной косой чертой.

grep '\-\-\-' your_file

Выходит только первый -:

grep '\---' your_file

Альтернатива без кавычек:

grep \\--- your_file

Ответ 4

Или вы можете использовать awk:

awk '/---/' file

Или sed:

sed -n '/---/p' file