как использовать grep с несколькими строками, чтобы найти

Я понимаю, как использовать 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 , но не знаю, подходит ли он для моего случая использования.

0
задан 17 August 2021 в 02:59

2 ответа

Для этого можно использовать grep .И есть несколько подходов, посмотрите здесь, например :

  1. Используйте экранированный символ вертикальной черты в выражении:

     <команда, выводящая текст> | grep "текст для поиска \ | другой текст для поиска" 
     
  2. Используйте grep с параметром -E :

     <команда, которая выводит текст> | grep -E "текст для поиска | другой текст для поиска" 
     
  3. Используйте grep с параметрами -e :

     <команда, которая выводит текст> | grep -e "текст для поиска" -e "другой текст для поиска" 
     
0
ответ дан 20 August 2021 в 10:26

Есть несколько способов сделать это

  1. передать несколько шаблонов с помощью -e ex.

     некоторая команда | grep -e foo -e bar -e baz 
     
  2. использовать регулярное выражение , которое соответствует нескольким шаблонам, например. с использованием расширенного регулярного выражения оператора чередования |

     somecommand | grep -E 'foo | bar | baz' 
     
  3. помещает шаблоны по одной на строку в файл и передает файл в grep через -f вариант напр.

     некоторая команда | grep -f patfile 
     

    где

     $ cat patfile 
    foo 
    bar 
    baz 
     
0
ответ дан 20 August 2021 в 10:26

Другие вопросы по тегам:

Похожие вопросы: