
10 awhdk;
14 hjoeow;
2 kdkld;
4 jkjdksl
Как отсортировать это по первому столбцу (т.е. по количеству)?
Я хотел бы получить такой результат:
14 hjoeow;10 awhdk;4 jkjdksl;2 kdkld
Мне нужно, чтобы оба столбца были напечатаны на основе сортировки первого столбца.
решение1
Вы можете использовать -k
для указания того, где в строке ввода начинается и заканчивается ключ сортировки.
Вы используете -n
опцию или добавляете n
к спецификации ключа сортировки, чтобы запустить числовую сортировку вместо лексической сортировки по умолчанию. И -r
для обратной сортировки.
Здесь, для числовой сортировки, вам не нужно ограничивать ключ сортировки командой sort. Если вы это сделаете:
sort -rn file
Он будет воспринимать всю строку как число. 14 hjoeow;
Например, строка будет восприниматься как 14
число.
Вы можете сделать:
sort -bk 1,1rn file
Сортировать только по первому полю, но это ничего не изменит.
Команда для объединения строк — paste
с -s
опцией. Вы можете указать разделитель с помощью -d
. \0
— это специальное значение для разделителя, которое означаетприсоединиться без чего-либо между нимиИтак, чтобы получить ожидаемый результат:
sort -rn file | paste -sd '\0' -
POSIX paste
требует передачи имени файла. -
— это снова специальное значение, которое означаетстандартный вводpaste
. В некоторых реализациях его можно опустить .