Відповіді:
Зі стандартним grep
синтаксисом:
grep '[>|]'
або
grep -e '>' -e '|'
або
grep '>
|'
або
grep -E '>|\|'
Якщо ви використовуєте GNU grep, ви можете зробити це за допомогою оператора or ( |
), який повинен бути уникнути (перед цим слід провести зворотну косу рису \
). Отже, щоб знайти лінії, що містять або трубу, або знак, що перевищує значення, включіть їх буквально разом із оператором або :
grep '|\|>' infile
Вихід:
|this is test
where is >
+
, ?
) - синтаксичний цукор для \{1,\}
та \{0,1\}
. (з іншого боку, EREs відновлює посилання ( \(.\)\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.