Ответы:
Со стандартным 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.