シェルスクリプトで配列をソートする方法

目次

スポンサードリンク

シェルスクリプト(bash)では配列変数を定義することができます。 配列の内容を整列したい場合は、trコマンドとsortコマンドを組み合わせてソートします。

配列をソートするサンプルコード

以下のサンプルコードは配列型の変数 array1 の内容をソートし、ソートした結果を 変数 array2 にセットしています。

#!/bin/bash

array1=('orange' 'banana' 'apple')

array2=(`echo "${array1[*]}" | tr ' ' '\n' | sort`)

echo "array1 => ${array1[*]}"
echo "array2 => ${array2[*]}"

exit 0

まず、echo “${array1[*]}” で配列 array1 の内容を出力しています。これだけだと配列の要素がスペース区切りで出力されるだけなので、 trコマンドで半角スペースを改行に置換しています。その結果を sort コマンドでソートした結果を array2 に代入しています。

sortコマンドは入力されたテキストを行単位で並べ替えるコマンドなので、trコマンドで配列の内容を1行ずつ改行する必要があります。サンプルコードは昇順ソートになっていますが、sortコマンドに -r オプションを付けることで降順ソートにもなります。

上記サンプルコードを実行すると以下のようにソート前後の内容が表示されました。

[root@hostname tmp]# ./array_sort.sh
array1 => orange banana apple
array2 => apple banana orange


シェルスクリプトの知識は、プログラマにとって長く役立つ知識です。 私はこちらの書籍で一通り知識を抑えました。基本から丁寧に解説されています。

最短3時間で覚えるLinuxシェルスクリプト
こちらは、シェルスクリプトの基本的な書き方、デバッグ方法、if, case, while, forなど基本的な制御構文について書かれています。30日間の無料体験もできる『Kindle Unlimited』でも読むことができます。

Linuxコマンドについて徹底的に学べるUdemy講座
もう絶対に忘れない Linux コマンド【Linux 100本ノック+名前の由来+丁寧な解説で、長期記憶に焼き付けろ!】 icon