Руководство пользователя для 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', будут печататься нечетные строки.
Назад | Вперед
Содержание (общее) | Содержание раздела
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|