私は配列を持っています
arr=( x11 y12 x21 y22 x31 y32)
この配列を次のように並べ替える必要があります
x11 x21 x31 y12 y22 y32
だから、アルファベットと数字の両方で並べ替える必要があります
シェルスクリプトでこれを実行するにはどうすればよいですか?
[ $i -le $j ]
を使用すると、「整数式が必要です」と表示されます。
また、文字列には、x.1.1
または1.x.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
BASHで配列をソートする方法 も参照してください。