Я понимаю, как использовать grep в простой форме:
<command that spits out text> | grep "text to find"
I хотел бы иметь возможность grep
одновременно использовать несколько разных фрагментов текста.
Как мне это сделать? Правильная ли команда grep
для этого?
Я запускаю arp-scan
и получаю список устройств и их MAC-адреса. Я хочу найти несколько уникальных строк MAC-адресов. Если бы мне нужен был только 1 MAC-адрес, я бы использовал grep
следующим образом:
arp-scan --localnet --interface=<my interface> | grep "mac address"
Я слышал о sed
, но не знаю, подходит ли он для моего случая использования.
Для этого можно использовать grep
.И есть несколько подходов, посмотрите здесь, например :
Используйте экранированный символ вертикальной черты в выражении:
<команда, выводящая текст> | grep "текст для поиска \ | другой текст для поиска"
Используйте grep
с параметром -E
:
<команда, которая выводит текст> | grep -E "текст для поиска | другой текст для поиска"
Используйте grep
с параметрами -e
:
<команда, которая выводит текст> | grep -e "текст для поиска" -e "другой текст для поиска"
Есть несколько способов сделать это
передать несколько шаблонов с помощью -e
ex.
некоторая команда | grep -e foo -e bar -e baz
использовать регулярное выражение , которое соответствует нескольким шаблонам, например. с использованием расширенного регулярного выражения оператора чередования |
somecommand | grep -E 'foo | bar | baz'
помещает шаблоны по одной на строку в файл и передает файл в grep
через -f
вариант напр.
некоторая команда | grep -f patfile
где
$ cat patfile
foo
bar
baz