-c | Задает отображение только числового значения, указывающего, сколько строк соответствуют шаблону |
-i | Дает указание игнорировать регистр символов |
-h | Подавляет вывод имен файлов, включающих найденные строки (по умолчанию в выводе команды grep каждой строке предшествует имя файла, в котором она содержится) |
-1 | Задает отображение только имен файлов, содержащих найденные строки |
-n | Задает нумерацию выводимых строк |
-s | Подавляет вывод сообщений о несуществующих или нетекстовых файлах |
-v | Задает отображение строк, не соответствующих шаблону |
Если в текущем каталоге требуется найти последовательность символов "sort" во всех файлах с расширением doc, выполните такую команду:
$ grep sort *.doc
Следующая команда осуществляет поиск фразы "sort it" во всех файлах текущего каталога:
$ grep "sort it" *
Опция -c позволяет узнать, сколько строк соответствуют заданному шаблону. Это может оказаться полезным в том случае, когда команда grep находит слишком много строк, и их лучше вывести в файл, а не на экран. Рассмотрим пример:
$ grep -с "48" data.f
4
Команда grep возвращает число 4. Это означает, что в файле data.f обнаружены 4 строки, содержащие последовательность символов "48". Следующая команда отображает эти строки:
$ grep "48" data.f
48 dec 3BC1997 LPSX 68.00 LVX2A 138
453 sept 5AP1996 USP 65.00 LVX2C 189
484 nov 7PL1996 CAD 49.00 PLV2C 234
4 83 may 5PA1998 USP 37.00 KVM9D 644
С помощью опции -n выводимые строки можно пронумеровать. В результате вы сможете с легкостью устанавливать, в какой позиции файла находится требуемая строка. Например:
$ grep -n "48" data.f
1: :48 dec 3BC1997 LPSX 68.00 LVX2A 138
2: :483 sept. 5AP1996 USP 65.00 LVX2C 189
5: :484 nov 7PL1996 CAD 49.00 PLV2C 234
6: :483 may 5PA1998 USP 37.00 KVM9D 644
Номера строк отображаются в первом столбце.
Благодаря опции -v можно отобрать те строки, которые не соответствуют шаблону. Следующая команда извлекает из файла data.f строки, не содержащие последовательность символов "48":
$ grep -v "48" data.f
47 oct 3ZL1998 LPSX 43.00 KVM9D 512
219 dec 2CC1999 CAD 23.00 PLV2C 68
216 sept 3ZL1998 USP 86.00 KVM9E 234
Вы, наверное, заметили, что при поиске строк, содержащих последовательность символов "48", были найдены строки заказов с кодом города не только 48, но также 483 и 484. Если необходимо найти заказ, у которого код города равен 48, добавьте в шаблон поиска символ табуляции:
$ grep "48
48 Dec 3BC1997 LPSX 68.00 LVX2A 138
Здесь запись
Если не известно, какой пробельный символ является разделителем полей в файле, можно воспользоваться регулярным выражением \ > — признаком конца слова:
$ grep '48\>' data.f
48 Dec ЗВС1997 LPSX 68.00 LVX2A 138
По умолчанию команда grep чувствительна к изменению регистра символов. Чтобы провести поиск без учета регистра, воспользуйтесь опцией -i. В файле data.f обозначение месяца Sept встречается как в верхнем, так и в нижнем регистре. Поэтому для отбора строк обоих видов следует применить такую команду:
$ grep -i "sept" data.f
483 Sept 5AP1996 USP 65.00 LVX2C 189
216 sept 3ZL1998 USP 86.00 KVM9E 234
8.2. Команда grep и регулярные выражения