Как я могу grep для строки, содержащей символ трубы |
или для символа >
:
files content:
|this is test
where is >
this is none
Теперь, что мне нужно с помощью команды grep
grep -iE "<some expression>" file_name
Выход:
|this is test
where is >
\|
не является стандартнымBRE
оператором, хотя он работает с GNU,grep
которыйgrep
встречается в большинстве операционных систем, построенных на ядре Linux.+
,?
) являются синтаксическим сахаром для\{1,\}
и\{0,1\}
. (с другой стороны, ERE освобождают обратные ссылки (\(.\)\1
), которые являются только функцией BRE)Использование выражения в скобках для сопоставления с любым из требуемых символов:
grep "[|>]" infile
Выход:
источник
-i
или-E
здесь.Правильный способ сделать это - использовать флаг -e, указанный в POSIX. Например:
источник
grep -e '>' -e '|' infile
тоже работает-e
определяется POSIX, но здесь не используется.\|
не указывается в POSIX.