Как сортировать по числовому (логическому) восходящему, но алфавитному порядку в Debian

#!/bin/bash
file="aa     a       a.station"
read -r -a myarray <<< "$file"
printf  "${myarray[*]}"

Это считывает строку в массив, разбивая на стандартные символы IFS (пробел, табуляцию, новую строку ). Затем печатается весь массив, каждый элемент, теперь уже с одиночными разделителями.

Вы также можете использоватьxargs:

#!/bin/bash
file="aa     a       a.station"
newfile=$(echo $file|xargs)
printf  "${newfile}"
0
06.09.2019, 23:12
1 ответ

Сортировка GNU имеет параметр -V/ --version-sort, предназначенный только для сортировки номеров версий. Он производит именно тот результат, который вам нужен, а также работает с составными номерами версий, такими как 0.10.123.

С этим конкретным набором данных вы также можете использовать sort -t. -k1,1n -k2,2n. То есть указать sortиспользовать .в качестве разделителя полей, а затем выполнить численную сортировку на основе первого и второго полей в указанном порядке.(-k1nбудет использовать оставшуюся часть строки, начиная с первого поля, что приведет к другому результату.)

2
28.01.2020, 02:29

Теги

Похожие вопросы