1. Синтаксис

grep "регулярное выражение" "файл" или cat "файл" | grep "регулярное выражение"

Пример: вывести из файла «words.txt» все строки, начинающиеся с буквы «a» grep "^a" "words.txt"

Пример: из результата команды uptime вывести только загрузку системы (удобно для записи в файл) uptime | grep -o "load average.*"

Пример: Просмотр конфигурационных файлов без комментария и пустых строк:

Краткая информация о семействе команд grep

Примеры использования команды:

grep 'regexp' filename (egrep 'regexp' filename)

или

cat filename | grep 'regexp' (cat filename | egrep 'regexp')

или

echo $varname | grep 'regexp' (echo $varname | egrep 'regexp')

где

regexp - регулярное выражение (шаблон поиска);

filename - имя файла, в котором осуществляется поиск;

varname - имя переменной, в значении которой осуществляется поиск.

Полный синтаксис и подробное описание команды grep или egrep можно получить выполнив команду man grep или man egrep.

Краткая информация о метасимволах регулярных выражений команды grep

^ якорный символ привязки регулярного выражения к началу строки

$ якорный символ привязки регулярного выражения к концу строки

. соответствует одному любому символу

* соответствует нулевому и более количеству повторений символа

[] соответствует одному из перечисленных в скобках символу

[^] соответствует одному из НЕ перечисленных в скобках символу

\< якорный символ привязки регулярного выражения к началу слова

\> якорный символ привязки регулярного выражения к концу слова

\(\) запоминающие скобки

x\{m,n\} интервал повторения символа (m - минимум, n - максимум)

Краткая информация о метасимволах регулярных выражений команды egrep

^ якорный символ привязки регулярного выражения к началу строки

$ якорный символ привязки регулярного выражения к концу строки

. соответствует одному любому символу

* соответствует нулевому и более количеству повторений символа

+ соответствует одному и более количеству повторений символа

? соответствует одному или нулевому количеству повторений символа

a|b соответствует либо a либо b

() группирующие скобки

Обработка параметров командной строки, команды shift и getopts.

Команда getopts используется shell-процедурами для разбора позиционных параметров и проверки опций на допустимость. Команда getopts поддерживает все применимые правила стандартного синтаксиса команд [см. intro(1), правила 3-10].

Цепочка_опций должна содержать флаги, которые будут распознаваться shell-процедурой, использующей getopts. Если за флагом следует двоеточие, то предполагается, что опция имеет аргумент или группу аргументов, которые должны отделяться от флага пробелами или табуляциями.

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

Если опции требуется аргумент, то getopts помещает его в переменную OPTARG.

Если встретилась некорректная опция, то в переменную имя помещается ?.

Если опции кончились, getopts возвращает ненулевой код завершения. Можно использовать специальную опцию --, чтобы отметить конец опций.

По умолчанию команда getopts разбирает позиционные параметры вызвавшей ее shell-процедуры, но если указать дополнительные аргументы, то getopts будет разбирать их.

ПРИМЕР Следующий фрагмент shell-процедуры cmd показывает, как можно обработать аргументы команды, допускающей опции a и b, а также опцию o, которая должна иметь аргумент:

while getopts abo: c

do

case $c in

a | b) FLAG=$c;;

o) OARG=$OPTARG;;

?) echo $USAGE

exit 2;;

esac

done

shift `expr $OPTIND - 1`

ПРИМЕЧАНИЯ Утверждение о эквивалентности предыдущих строк не вполне верно:

  1. В последней строке опции b и a идут в ином порядке, чем в предыдущих, и так как в данном примере эти опции помещаются в одну переменную FLAG, то при обработке последней строки окончательное значение этой переменной окажется не таким, как в предыдущих строках.

  2. В тех строках, в которых аргумент опции o задан в виде "xxx z yy", OARG примет значение xxx z yy, а в тех строках, где аргумент опции o задан как xxx,z,yy, OARG будет равен xxx,z,yy.

ФАЙЛЫ

/usr/bin/getopt Старая версия программы разбора

опций.

/usr/lib/getoptcvt Программа перевода shell-проце-

дур, использовавших getopt, на

getopts.

СМ. ТАКЖЕ gutil(1G), intro(1), sh(1). getopt(3C) в Справочнике программиста.

ДИАГНОСТИКА Команда getopts выводит сообщение об ошибке в стандартный протокол, когда встречается опция, не включенная в цепочку_опций.

ПРЕДОСТЕРЕЖЕНИЯ Хотя текущая реализация getopts допускает некоторые отступления от правил, задающих синтаксис команд [см. intro(1)], этим не следует пользоваться, так как подобные возможности могут не поддерживаться в следующих версиях системы. Пусть, как и в ПРИМЕРЕ, a и b - опции без аргументов, а опции o требуется аргумент:

cmd -aboxxx file

Здесь нарушено правило 5: опция с аргументом не должна быть в одной группе с остальными опциями.

cmd -ab -oxxx file

Нарушено правило 6: после опции, которой требуется аргумент, должен быть пробел или табуляция.

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

awk - команда контекстного поиска и преобразования текста. Она - фильтр. Ее можно рассматривать как оболочку "awk" в оболочке "shell".

Соседние файлы в папке материалы к собеседованию