asort = 配列の要素を並び替える(Gawk専用) - AWK
○Gawk on Windows ○Gawk ×mawk32 ×Mawk ×awk
配列の要素を、値の小さな順で並び替えます。o 配列の添え字は、1から順に付け直します。
**** 書式
--------
asort(並び替えたい配列 [, 並び替え結果])
--------
o この関数は、Gawkの拡張機能です。
o 並び替えたい配列 -- 他に指定がないと、この配列を直接変更します。
o 並び替え結果 -- 配列を返します。「並び替えたい配列」を直接変更したくない時に指定します。
+ 呼び出す時に、値を設定する必要はありません。
o 戻り値 -- 配列の要素数です。
**** 使用例
--------
BEGIN {
a[1] = "158cm ミクさん";
a[2] = "152cm リンちゃん";
a[3] = "156cm レン君";
a[4] = "162cm ルカ様";
n = asort(a, b);
print "ミクさん達の背比べ(小さい順)";
for (i = 1; i <= n; ++i) {
print i "番は、" b[i];
}
}
--------
o asort 呼び出し後の、配列 b(並び替え結果)の内容
--------
b[1] = "152cm リンちゃん";
b[2] = "156cm レン君";
b[3] = "158cm ミクさん";
b[4] = "162cm ルカ様";
--------
o 実行結果
--------
ミクさん達の背比べ(小さい順)
1番は、152cm リンちゃん
2番は、156cm レン君
3番は、158cm ミクさん
4番は、162cm ルカ様
--------
o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。
o 大きい順に表示したい時は、後ろから数えます。
**** 機能
o 配列の要素を、値の小さな順で並び替えます。
o 配列の添え字は、1から順に付け直します。
+ 「並び替え結果」の指定が無い時は、「並び替える配列」の添え字を直接変更します。
o 並び替え順序は、AWK処理系の大小判定の通りです。
+ 基本的には、文字列として比較します。"1" "11" "2" の順序で並びます。
+ 配列の要素に数値が混じっている時は、例外もあるみたいです。
+ 例えば、配列の要素の値が全て整数の時は、数値の小さい順(1 2 11)で並びました。
o 大文字小文字を区別したくない時、変数 IGNORECASEの値を設定すると、動作が変わります。
o 同じ値を持つ要素が複数あると、それらの要素は連続して並びます。「纏めて一つの要素にする」事はしません。
o この機能をサポートしていない処理系があります。
** 処理系に依存する動作
o この機能をサポートしている処理系は、次の通りです。
+ Gawk on Windows 3.1.7
+ Gawk for Windows 3.1.6
**** メモ
o Gawk以外では、AWKプログラムから、sortコマンドを呼び出す方法があります。
o もしくは、functionを使って、この機能と同等の事をする関数を作る事も出来ます。
**** 確認した処理系
o Gawk on Windows 3.1.7
o Gawk for Windows 3.1.6
o mawk MBCS (32bit版) 1.3.3 -- 非対応
o Mawk for Windows 1.3.3 -- 非対応
o original = the one true awk(updated May 1, 2007) -- 非対応
==
関連ページ:
▼AWKの配列操作関数と関連機能(▼ABC順)
▼AWKプログラムを書く(▼ABC順)
▼AWK
▼制作メモ
> asorti = 配列の添え字を取り出して並び替える(Gawk専用)
SUBSEP = 配列の添え字の区切り文字
(2010年9月4日追加。戻り値)