Есть ли простой способ сделать любую из следующих вещей в awk?сортировка хэшей/массивов в awk
- Сортировка массива/хэша по его данным
- Сортировка хэш по его строка ключ
Есть ли простой способ сделать любую из следующих вещей в awk?сортировка хэшей/массивов в awk
Вот кто-то ответ на очень похожей проблемой: http://www.computing.net/answers/unix/urgent-help-with-sorting-in-awk/4442.html
Какой должна быть что-то вроде этого:
gawk 'BEGIN {c=1} { array[c] = sprintf ("%s %s", $2, $1); c++ }
END { asort(array); for (x=1;x<c;x++) { print array[x] } }'
Обратите внимание, что я использовал gawk. Если вы хотите встроенную сортировку, используйте gawk.
Этот пример берет «разделенные пробелами» входные пары ключей и сортирует их по второму значению (конечно, он печатает их в формате value/key, но вы видите, что я там делаю).
Чтобы сделать это до массива, оставшегося в gawk, вы использовали бы что-то подобное.
Если вы используете awk или mawk, вам нужно будет использовать одну из многих функций сортировки, доступных на страницах man, чтобы выполнить сортировку.
Из поглазеть страницы руководства: Все массивы в AWK являются ассоциативными, т.е. индексируются строковых значений. Специальный оператор in может использоваться в операторе if или while, чтобы увидеть, имеет ли массив индекс, состоящий из определенного значения . if (val in array) print array [val] Если массив имеет несколько индексов, используйте (i, j) в массиве.
Вот пример родного AWK сортировки: http://en.literateprograms.org/Quicksort_(AWK) К сожалению, этот сайт, кажется, не имеют каких-либо уведомлений или я бы получил это рано. Надеюсь, вы это видите. – Chris
http://www.netlib.org/research/awkbookcode/ch7 Это ссылка на сортировку вставки в awk (и многое другое). – Chris