asorti = 配列の添え字を取り出して並び替える(Gawk専用) - AWK
○Gawk on Windows ○Gawk ×mawk32 ×Mawk ×awk
配列の添え字を取り出して、小さな順に並び替えます。o 配列の添え字を、値として並べます。
**** 書式
--------
asorti(並び替えたい配列 [, 並び替え結果])
--------
o この関数は、Gawkの拡張機能です。
o 並び替えたい配列 -- 他に指定がないと、この配列を直接変更します。
o 並び替え結果 -- 配列を返します。「並び替えたい配列」を直接変更したくない時に指定します。
+ 呼び出す時に、値を設定する必要はありません。
o 戻り値 -- 配列の要素数です。
**** 使用例
--------
BEGIN {
a["CV-01"] = "ミクさん";
a["CV-02"] = "リンレン";
a["CV-03"] = "ルカ様";
n = asorti(a, b);
print "ミクさん達の登場順";
for (i = 1; i <= n; ++i) {
print i "番。" b[i] "、" a[b[i]];
}
}
--------
o asorti 呼び出し後の、配列 b(並び替え結果)の内容
--------
b[1] = "CV-01";
b[2] = "CV-02";
b[3] = "CV-03";
--------
o 実行結果
--------
ミクさん達の登場順
1番。CV-01、ミクさん
2番。CV-02、リンレン
3番。CV-03、ルカ様
--------
o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。
o 逆順に表示したい時は、後ろから数えます。
**** 機能
o 配列の添え字を取り出して、小さな順に並び替えます。
+ 配列の添え字を、値として並べます。
+ そして、添え字を 1から順に付け直します。
o 「並び替え結果」の指定が無い時は、「並び替える配列」を直接変更します。
o 並び替え順序は、文字列の小さい順です。
+ 添え字に数値を指定した時も、「文字列としての小さな順」に並びました。1 11 2 の順序です。
+ asortの並び順とは少し違いますので、ご注意下さい。
o 大文字小文字を区別したくない時、変数 IGNORECASEの値を設定すると、動作が変わります。
o 同じ値を持つ要素が複数あると、それらの要素は連続して並びます。「纏めて一つの要素にする」事はしません。
o この機能をサポートしていない処理系があります。
** 処理系に依存する動作
o この機能をサポートしている処理系は、次の通りです。
+ Gawk on Windows 3.1.7
+ Gawk for Windows 3.1.6
**** メモ
o この機能は、配列の添え字を文字列にしている時に便利です。
o for (i in a) を使って表示させると、添え字順に並ぶとは限らないからです。
**** 確認した処理系
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
▼制作メモ
> SUBSEP = 配列の添え字の区切り文字
+
asort = 配列の要素を並び替える(Gawk専用)