Я консольный новичок. Насколько я знаю, сопоставление нескольких шаблонов вроде этого:
aaa|bbb
Но, | символ является каналом на консоли, так как я могу указать эти несколько шаблонов для grep?
Вы можете выйти из трубы и заключить узор в кавычки:
grep "aaa\|bbb"
или используйте -E
:
grep -E "aaa|bbb"
или
grep -E aaa\|bbb
Поместите "" между вашим шаблоном, например egrep "toto|name"
Или ты идешь
grep -ie aaa -ie bbb filename
для поиска aaa или bbb в имени файла с помощью grep без учета регистра.
Наконец, вы можете поместить свои шаблоны в файл и использовать флаг -f. Так grep -f patternlist.txt files
. Где patternlist.txt - это просто:
aaa bbbMake sure there are no empty lines, though.
- Кристофер Карел
Заключите шаблон в одинарные кавычки:
grep -E 'aaa|bbb'
Если в вашем шаблоне есть апостроф, заключите его в двойные кавычки:
grep -E "its|it's"
Если он содержит как одинарные, так и двойные кавычки, заключите его в двойные кавычки и поставьте перед символами обратную косую черту. ", $, ` и \:
grep -E "its|it's|letter \"e\"|pay \$20|\`a'|C:\\\\AUTOEXEC\\.BAT"
Последний пример C:\AUTOEXEC.BAT
учитывает, что обратная косая черта является особенной как для оболочки, так и для синтаксиса регулярных выражений egrep.
PS: The страница цитирования bash обязательно к прочтению.
egrep "aaa|bbb|ccc" <file>
найдет все строки с aaa ИЛИ bbb ИЛИ ccc в файле
egrep -i "aaa|bbb|ccc" <file>
найду aaa
ИЛИ aaA
ИЛИ aAa
ИЛИ Aaa
ИЛИ aAA
ИЛИ AAa
ИЛИ AAA
ИЛИ ... и то же самое для всех остальных строк, перечисленных между конвейером |
персонажи.