Как 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