Фильтрация контента
10.7 Фильтрация контента
Команду grepможно использовать для фильтрации строк в файле или вывода другой команды, соответствующей заданному шаблону. Этот шаблон может быть таким же простым, как точный текст, который вы хотите сопоставить, или он может быть гораздо более сложным с использованием регулярных выражений.
Например, чтобы найти всех пользователей, которые могут войти в систему с оболочкой BASH, grepможно использовать команду для фильтрации строк из /etc/passwdфайла для строк, содержащих шаблон bash:
sysadmin@localhost:~$ grep bash /etc/passwd
root:x:0:0:root:/root:/bin/bash
sysadmin:x:1001:1001:System Administrator,,,,:/home/sysadmin:/bin/bashЧтобы было проще увидеть, что именно совпадает, используйте --colorопцию. Эта опция выделит совпадающие элементы красным цветом:
sysadmin@localhost:~$ grep --color bash /etc/passwd
root:x:0:0:root:/root:/bin/bash
sysadmin:x:1001:1001:System Administrator,,,,:/home/sysadmin:/bin/bashВ некоторых случаях важно не найти конкретные строки, соответствующие шаблону, а то, сколько строк соответствует шаблону. Опция -cобеспечивает подсчет количества совпадений строк:
sysadmin@localhost:~$ grep -c bash /etc/passwd
2При просмотре вывода команды grepможет быть трудно определить исходные номера строк. Эта информация может быть полезна при возврате в файл (возможно, для редактирования файла), чтобы быстро найти одну из совпадающих строк.
Опция -nкоманды grepбудет отображать исходные номера строк. Чтобы отобразить все строки и их номера строк в /etc/passwdфайле, содержащем шаблон bash:
sysadmin@localhost:~$ grep -n bash /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
27:sysadmin:x:1001:1001:System Administrator,,,,:/home/sysadmin:/bin/bashОпция -vинвертирует совпадение, выводя все строки, не содержащие шаблон. Чтобы отобразить все строки, не содержащиеся nologinв /etc/passwdфайле:
sysadmin@localhost:~$ grep -v nologin /etc/passwd
root:x:0:0:root:/root:/bin/bash
sync:x:4:65534:sync:/bin:/bin/sync
operator:x:1000:37::/root:/bin/sh
sysadmin:x:1001:1001:System Administrator,,,,:/home/sysadmin:/bin/bashОпция -iигнорирует различия регистра (заглавных букв). Следующее ищет шаблон theв newhome.txt, позволяя каждому символу быть в верхнем или нижнем регистре:
Опция -wвозвращает только те строки, которые содержат совпадения, образующие целые слова. Чтобы быть словом, перед строкой символов должен стоять символ, не являющийся словом. К словесным символам относятся буквы, цифры и символ подчеркивания.
В следующих примерах выполняется поиск шаблона areв newhome.txtфайле. Первая команда выполняет поиск без параметров, а вторая команда включает параметр -w. Сравните результаты:
Last updated