Передача по каналу в разность эквивалентна выполнению
diff path/file.name
и затем, после того как это работает, вводя все содержание файла.
Как Вы видите, это не то, что Вы ожидали.
Следующее использование командной строки awk
предварительно ожидать последнее поле каждой строки file.txt, делает обратный числовой вид, затем использует cut
удалить добавленное поле:
awk '{print $NF,$0}' file.txt | sort -nr | cut -f2- -d' '
Отсортировать последний столбец по убыванию с помощью GNU awk:
awk '{
# save current row in array with current row number as index
row[NR]=$0
# save current last field in array with current row number as index
last[NR]=$NF
}
END{
# sort array "last" numerically ("num") based on its
# values ("val") descending ("desc")
PROCINFO["sorted_in"]="@val_num_desc";
for(i in last)
print row[i]
}' file
Одной строкой:
awk '{ row[NR]=$0; last[NR]=$NF } END{ PROCINFO["sorted_in"]="@val_num_desc"; for(i in last) print row[i] }' file
Выход:
hello my name is Jordan: 476 hello my name is Manu: 98 hello my name is Joi: 45 hello my name is Loi: 23 hello my name is John: 4
См. 8.1.6 Использование предопределенных порядков сканирования массива с помощью gawk для получения дополнительной информации об алгоритмах сортировки и 8 Powerful Awk, встроенный -в переменных — FS, OFS, RS, ORS, NR, NF, ИМЯ ФАЙЛА, FNR
sort -k
.begfield
функция в виде GNU просто считает в обратном порядке для обнуления. Ваш подход decorate-sort-undecorate (DSU), кажется, лучший способ, которым я думаю. – Mikel 03.04.2011, 02:20$NF,$RS
и нет$NF,$0
? Я не знал$RS
сделал это. (Я предполагаю, что это эквивалентно$NF,$"\n"
, который делает то же, но это также удивляет, я думаю.) – Mikel 03.04.2011, 03:36$
может сопровождаться любым выражением. “Эффект полевой оценки выражения числа к чему-либо кроме неотрицательного целого числа является неуказанным”. GNU awk (в моей системе) рассматривает строку как"\n"
как нуль. Другие (например, исходная реализация A, W и K) прерываются с сообщением об ошибке. ЕслиRS
произошедший, чтобы быть цифрой, Вы получили бы соответствующее поле на любой реализации. Не делайте этого, используйте$0
. – Gilles 'SO- stop being evil' 03.04.2011, 14:51