#!/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}"
Сортировка GNU имеет параметр -V
/ --version-sort
, предназначенный только для сортировки номеров версий. Он производит именно тот результат, который вам нужен, а также работает с составными номерами версий, такими как 0.10.123
.
С этим конкретным набором данных вы также можете использовать sort -t. -k1,1n -k2,2n
. То есть указать sort
использовать .
в качестве разделителя полей, а затем выполнить численную сортировку на основе первого и второго полей в указанном порядке.(-k1n
будет использовать оставшуюся часть строки, начиная с первого поля, что приведет к другому результату.)