
KTNI_Kozlov_otvety / 40
.doc40. Семейство фильтров grep.
Команда grep.
Формат команды: grep параметр(ы) шаблон имя_файла(ов) .
Команда grep применяется для поиска и отображения данных в указанном ей файле. Команда grep осуществляет поиск в содержимом одного или нескольких файлов на предмет сравнения с регулярным выражением или символьным шаблоном. Если совпадение будет найдено, то grep выведет каждую строку, содержащую совпадение, изменение самого файла при этом не происходит. Команда может также использоваться совместно с программным каналом при перенаправлении потока стандартного вывода другой команды на себя (команда | grep –опции шаблон).
Таблица 1 – Параметры команды grep
*****************************
Параметр |
Описание |
-i |
Задает режим игнорирования регистра, символы верхнего и нижнего регистра считаются идентичными. |
-l |
Перечисляет только имена файлов, которые содержат найденные строки. |
-n |
Задает простановку относительного номера к каждой строке в файле. |
-v |
Меняет условие поиска на обратные для выдачи только тех строк, которые не соответствуют шаблону. |
-c |
Задает вывод только количества строк, которые содержат шаблон. |
-w |
Задает поиск выражения как слова. |
*****************************
Таблица 2 – Метасимволы в регулярных выражениях
*****************************
Метасимвол |
Значение |
Пример |
Результат |
^ |
Знак начала строки |
‘^шаблон’ |
Выбор всех строк, которые начинаются с «шаблон» |
$ |
Знак конца строки |
‘шаблон$’ |
Выбор всех строк, которые заканчиваются на «шаблон» |
. |
Любой один символ |
‘ш….н’ |
Выбор строк, которые содержат символ «ш» и через четыре символа символ «н» |
[ ] |
Соответствует одной позиции в шаблоне |
‘[Шш]аблон’ |
Выбор строк, которые содержат «Шаблон» и «шаблон» |
[^] |
Соответствует одному символу не в диапазоне поиска |
‘[^а-р]аблон’ |
Выбор строк, которые не содержат символы в диапазоне от «а» до «р» и находящихся перед «аблон» |
* |
Соответствует любому количеству символов |
‘[а-я]*’ |
Выбор алфавитных символов нижнего регистра |
*****************************
Команда egrep.
Команда egrep осуществляет поиск в содержимом одного или нескольких файлов заданного шаблона с использованием расширенного набора метасимволов в регулярных выражениях.
Формат команды: egrep –параметры шаблон имя_файла.
Таблица 3 – Расширенный набор метасимволов команды egrep
*****************************
Метасимвол |
Описание |
Пример |
Результат |
+ |
Соответствует одному или более предшествующих символов |
‘[а-я]+аблон’ |
Выбор одного или более символов нижнего регистра, которые находятся в диапазоне от «а» до «я» и за которыми следует «аблон» |
в|п |
Соответствует одному из «в» или «п» |
‘яблоко|груша’ |
Выбирается яблоко и/или груша |
( | ) |
Символы групп |
‘(1|2)+’ ‘(к|р)+орова’ |
Выбор одного или более появлений. Например, «1» или «2» и «корова» или «ророва» |
*****************************
Найти все строки в файле gauss2.plx, которые содержат символ «Y» и затем следующим символом имеют символы «H» или «L». Формат команды будет следующий.
Команда fgrep.
Команда fgrep осуществляет поиск в файле ключевого выражения как фиксированной строки. Ее работа отличается от работы grep и egrep, т.к. она обрабатывает все символы и любые метасимволы регулярных выражений, указанные в командной строке как обычные символы, за исключением знака вопроса (?) и знака доллара ($). Команду fgrep можно использовать для поиска словосочетаний в файлах, содержащих метасимволы. Формат команды такой же, как у grep и egrep: fgrep –параметр(ы) шаблон имя_файла(ов).