シェルで配列を使う際、要素でソートする場合、以下のようにするのですが、
HOGE2=(`echo ${HOGE[*]} | sed 's/\s/\n/g' | sort`)これだと、確かにソートされるのですが、数字としては、うまく処理されません。そこで、以下の通り、一旦、ゼロ付数字に変換してやることで、正常にソートされます。
- 正常にソートされない
要素が 1 5 11 2 3 21 31 22 だとすると、以下のようになってしまいます。1 11 2 21 22 3 31 5
- ゼロ付数字に変換してソートする
要素を 01 05 11 02 03 21 31 22 に変換してソートします。# ゼロ付でソート
HOGE2=(`printf "%02.0f\n" ${HOGE[*]} | sort | sed 's/\n/ /g' | sed 's/\s+$//g'`)# ゼロを取り除く
HOGE3=(`printf "%.0f " ${HOGE2[*]}`)1 2 3 5 11 21 22 31
0 件のコメント:
コメントを投稿