руководство пользователя для gnu awk
3. полезные однострочные программымногие полезные awk-программы --- короткие, занимают одну или две строки. мы предлагаем здесь для начала набор таких программ. некоторые из них содержат еще не рассмотренные конструкции. описание этих программ покажет вам, что к чему. но чтобы стать экспертом по awk, нужно прочесть книгу до конца! в большинстве примеров фигурирует файл с данными с именем `data'. если вы будете пользоваться этими программами, вам нужно заменить `data' именем своего файла с данными. awk '{ if (length($0) ? max) max = length($0) } end { print max }' data эта программа печатает длину самой длинной входной строки. awk 'length($0) ? 80' data эта программа печатает каждую строку, которая длиннее 80 символов. единственное правило имеет в качестве образца относительное выражение и не имеет действия ( т. е., используется действие по умолчанию --- печать записи). expand data | awk '{ if (x ! length()) x = length() } end { print "maximum line length is " x }' эта программа печатает длину самой длинной строки в `data'. ввод обрабатывается программой expand, заменяющей табуляцию пробелами, так что сравниваются ширины записей до самой правой колонки. awk 'nf ? 0' data эта программа печатает каждую строку, которая имеет по крайней мере одно поле. это --- простой способ убрать пустые строки из файла (или, скорее, создать новый файл, подобный старому, но без пустых строк. awk 'begin { for (i = 1; i != 7; i++) print int(101 * rand()) }' эта программа печатает семь случайных чисел из диапазона от 0 до 100 включительно. ls -lg files | awk '{ x += $5 } ; end { print "total bytes: " x }' эта программа печатает суммарное количество байтов в файлах текущего каталога. ls -lg files | awk '{ x += $5 } end { print "total k-bytes: " (x + 1023)/1024 }' эта программа печатает количество килобайтов в файлах каталога. awk -f: '{ print $1 }' /etc/passwd | sort эта программа печатает отсортированный список регистрационных имен всех пользователей. awk 'end { print nr }' data эта программа печатает количество строк в файле data. awk 'nr % 2 == 0' data эта программа печатает строки файла data с четными номерами. если заменить выражение на `nr % 2 == 1', будут печататься нечетные строки. |
<<< | оглавление | >>> |