сортировка в shell-скрипт
у меня есть массив
arr=( x11 y12 x21 y22 x31 y32)
мне нужно отсортировать этот массив в
x11 x21 x31 y12 y22 y32
Итак, мне нужно отсортировать как алфавитный, так и числовой мудрый
Как выполнить это в сценарии оболочки ?
если я использую [ $i -le $j ]
, Он говорит: "ожидается выражение целого".
и строки также могут содержать другие символы:x.1.1
или 1.x.1
.
как мне это сделать ?
1 ответов
сначала разделите элементы массива на строки (большинство программ * nix работают только со строками):
for el in "${arr[@]}"
do
echo "$el"
done
затем отсортируйте строки:
for el in "${arr[@]}"
do
echo "$el"
done | sort
теперь вы можете назначить это массиву снова:
arr2=( $(
for el in "${arr[@]}"
do
echo "$el"
done | sort) )
Бинго:
$ echo "${arr2[@]}"
x11 x21 x31 y12 y22 y32
чтобы понять, как все это работает, и как изменить его, если он не делает точно то, что вы хотите, посмотрите на man
страницы:
man bash
man sort
см. также как сортировать массив в Баш.