руководство пользователя для 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', будут печататься нечетные строки. |
| <<< | оглавление | >>> |
