2008年6月17日火曜日

シェルで配列を使う No.002

なんでもかんでもシェルでやってしまおうとすると、配列を扱うことが多くなり、配列による複雑な処理が増えてきます。

配列全体を表示する時は、echo ${HOGE[*]} としたりするのですが、そうすると配列の要素がブランク区切りで表示されます。

echo ${HOGE[*]}
a b c d e f g h i j k 1 1 1 1 2 2 2 a b c x y z
いろんな処理をしていると、重複した要素をまとめたいことがあります。また、要素をソートしたい場合もあります。以下、それらの方法です。

  1. 重複した要素をまとめる
    sort と uniq を使いたいので、配列の要素列をスペースを改行に変換します。
    HOGE2=(`echo ${HOGE[*]} | sed 's/\s/\n/g' | sort | uniq`)
  2. 要素をソートする
    1.の例とほとんど同じで、uniqが無いだけです。
    HOGE2=(`echo ${HOGE[*]} | sed 's/\s/\n/g' | sort`)

0 件のコメント: