Руководство пользователя для GNU Awk

Arnold D. Robbins
перевод Балуева А. Н.

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

В начало страницы

<<< Оглавление Страницы: 3  4 >>>