Intereting Posts
Как восстановить резервную копию Duplicity из Amazon S3 на Debian? Есть ли способ сохранить вкладку разделенных значений в 2-й массив w_scan: нет данных от PAT определить фактическое использование памяти несколькими процессами, которые разделяют большой сегмент памяти Что случилось с моим свободным пространством Проблема Бодхи с Наутилусом как SU Получить список файлов в качестве вывода скрипта? Как я могу обойти программу с ошибкой, если есть * любой * stdin? Владелец общей папки Получение PID фонового процесса, который запускается через источник Как псевдонимы команды после SSH-соединения с несколькими ходами в одном и том же псевдониме Позиция «double_buffer yes» в ~ / .conkyrc Sed Использование: Добавить shebang отсутствует в первой строке скрипта Сеть CentOS 7 с объединенным мостом работает только на одном сетевом адаптере найти не рекурсивно, когда файл наверху

Сортировка полей inline

Я пытаюсь сортировать в строке ввода по неизвестному числу полей:

Входные данные:

ab bc bc ab cd ef bc bc cd ef cd bc ab ef ab bc cd gh 

Вывод:

 ab bc ab bc bc cd ef bc cd ef ab cb cd ab bc cd ef gh 

Я использовал что-то вроде awk '{if($2 < $1) print $2,$1;else print}' но похоже, что это будет беспорядочно для более чем двух полей. Любая помощь?

Один из способов использования perl :

 perl -lane 'printf qq[%s\n], join q[ ], sort @F' infile 

Вывод:

 ab bc ab bc bc cd ef bc cd ef ab bc cd ab bc cd ef gh 

Один способ использования GNU awk:

 awk '{ split($0, arr); asort(arr); for (i=1; i<=length(arr); i++) { printf "%s ", arr[i] }; printf RS } ' infile 

Вывод:

 ab bc ab bc bc cd ef bc cd ef ab bc cd ab bc cd ef gh 

В сценарии оболочки:

 while read n do echo $(echo $n | tr " " "\n" | sort ) done < infile 

(Это слишком много вилки, предпочитайте решение perl или gnu awk)

Вот еще одно решение perl , похожее на ответ @ Birei, но более краткий:

 $ perl -anle 'print "@{[sort @F]}"' file ab bc ab bc bc cd ef bc cd ef ab bc cd ab bc cd ef gh