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