Руководство пользователя для GNU Awk
11. Массивы в awk
11.4 Примеры основных массивов
Следующая программа берет список строк, каждая строка начинается с номера строки, и затем печатает их в порядке номеров строк. Эти номера распложены не подряд при чтении, они перемешаны. Программа сортирует записи, формируя массив, использующий номера строк как индексы. Затем печатает строки в порядке их номеров. Это очень простая программа. Она сбивается, если встречает повторяющиеся номера, пропуски или строки, которые не начинаются с номеров.
-
if ($1 ? max)
max = $1 arr[$1] = $0 ""
END -
for (x = 1; x != max; x++)
print arr[x] ""
Первое правило следит за наибольшим из прочтенных номеров строк; оно также запоминает все строки в массиве arr с индексами, равными номерам строк. Второе правило исполняется после окончания ввода. Оно печатает все строки. Если это программа исполняется со следующим вводом:
5 I am the Five man
2 Who are you? The new number two!
4 . . . And four on the floor
1 Who is number one?
3 I three you.
выход будет таким:
1 Who is number one?
2 Who are you? The new number two!
3 I three you.
4 . . . And four on the floor
5 I am the Five man
Если номер строки повторяется, то последняя строка с этим номером перекроет остальные. Пропуски в номерах будут обрабатываться, если слегка усовершенствовать правило END программы:
END -
for (x = 1; x != max; x++)
if (x in arr)
print arr[x] ""
Назад | Вперед
Содержание (общее) | Содержание раздела
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|