Пять grep-подобных программ






Все знают и любят grep. Сегодня мы с вами рассмотрим пять утилит, «заточенных» для применения функционала grep в определённых условиях, а именно: pgrepgrepcidr, ngrep, pdfgrep и taggrepper. Использовать эти утилиты вы можете из своей любимой оболочки. также в заметке приводятся примеры использования каждой утилиты.



pgrep

pgrep становится довольно часто используемой командой (или это мне так кажется). Задачей этой утилиты является просмотр списка запущенных процессов и вывод их PID согласно заданным критериям, не выводя при этом PID самой pgrep. Например:

В этом примере pgrep вывела идентификаторы процессов, имеющих в своих именах слово 'ssh'. Для сравнения, пользуясь «традиционным» способом, вам пришлось бы дать команду:

Также, вы можете указывать дополнительные критерии поиска. Например команда:

выведет PID всех процессов, в командной строке запуска которых есть слово 'sshd' и эффективный UID которых равен root. Или же, например, при помощи команды

вы можете получить список PID процессов, эффективные UID которые равны root или daemon. Дополнительную информацию об утилите pgrep можно получить из её man-страницы.

grepcidr

grepcidr очень удобна в случаях, когда необходимо отыскать вхождения IP-адресов или их диапазонов в формате Classless Inter-Domain Routing (CIDR). Так же, как и grep, grepcidr понимает опцию инвертирования и может производить поиск в файле. grepcidr может производить сравнение с шаблоном тысячи и даже миллионы IP-адресов, используя небольшое количество памяти и делая это быстро.

Формат вызова grepcidr для поиска IP-адресов в файле в общем случае таков:

Шаблон может быть определён:

  • в CIDR формате: a.b.c.d/xx
  • в виде диапазона: a.b.c.d-e.f.g.h
  • в виде одиночного адреса: a.b.c.d

Например, найдём наших клиентов, оказавшихся в чёрном списке:

Следующая команда отыщет все появления loopback-адресов в файле iplog:

Следующей командой выполняется поиск IP-адресов из диапазона:

А в этой команде список шаблонов берётся из файла list1:

Больше информации об использовании grepcidr можно найти на её man-странице.

ngrep

Задачей ngrep является поиск соответствия grep-шаблонов в сетевом трафике. ngrep является pcap-совместимой утилитой, что даёт пользователю возможность использовать шестнадцатиричные строки при определении шаблонов.

Если вы запустите ngrep без параметров, вы увидите весь трафик, проходящий через ваш компьютер. Чтобы сузить полосу поиска вхождений шаблона лучше воспользоваться опцией -d  для определения сетевого интерфейса, который нужно прослушивать. Например, следующая команда будет выводить содержимое пакетов, проходящих через интерфейса eth0 и в которых порт источника или порт получателя равны 80:

А при помощи следующей команды вы получите содержимое пакетов любого интерфейса, содержащих 'error' и в которых порт источника или порт получателя равны 514:

Дополнительную информацию об ngrep можно найти в соответствующей man-странице.

pdfgrep

pdfgrep, как можно догадаться из её названия, предназначена для поиска по шаблону в тексте PDF-файлов. Набор опций pdfgrep похож на набор опций классической grep, то есть вы можете определить вывод номеров страниц, имён файлов, включить регистронезависимость и тому подобное. Например:

будет выполнять регистронезависимый поиск слова 'seven' в файле SomeBook.pdf с указанием номеров страниц, на которых соответствие шаблону было найдено.

Дополнительную информацию об pdfgrep можно найти в соответствующей man-странице.

taggrepper

taggrepper — это небольшая утилита для grep'а тэгов в медиафайлах. На сегодняшний день она умеет выполнять поиск на основе регулярных выражений в тэгах файлов MP3, Ogg Vorbis и FLAC. Поддерживается рекурсивный обход файлов. Вот некоторые часто используемые опции утилиты, определяющие тип информации для вывода:

  • --display-title
  • --display-artist
  • --display-album
  • --display-year
  • --display-genre
  • --display-comment
  • --display-track
  • --display-composer
  • --display-orig-artist
  • --display-copyright
  • --display-url
  • --display-encoded-by

Например, следующая команда выведет имена всех mp3-файлов 2009 года издания, начиная с текущего каталога:

А эта команда будет выведет список файлов каталога ~/AV/Music_collection/, в тэге исполнителя которых будет найден фрагмент 'Rahman':

Дополнительную информацию об taggrepper можно найти в соответствующей man-странице.

В заключение

Не забывайте о существовании конвейеров оболочки и вы всегда сможете добиться хороших результатов при выполнении поставленных задач за более короткие строки.

Источник: linuxaria.com




Пять grep-подобных программ: 3 комментария

  1. Вообще-то давно пора прочитать маны по используемым командам и вместо того жутчайшего примера, что в посте, заюзать

    ps -eo pid,comm | grep ssh

    1. anon, спасибо вам сердешное! Вот так иногда не хватает умного совета ;)

Комментарии запрещены.