2013-04-18 15 views
5

私はgoogledし、AWK 4.0の後に、forループの直前にPROCINFO ["sorted_in"]コマンドを置くことで配列を定義された順序で印刷できることを確認します。たとえば、AWKで定義された順序で配列を印刷する方法3.1.3

PROCINFO["sorted_in"] = "@ind_num_asc" 
    for(i in array) 
      print i, array[i] 

AWK 4.0.2では動作します。しかし、私はAWK 3.1.3環境で試してみましたが、うまくいきませんでした。このAWKの初期バージョンはこの機能をサポートしていませんか? AWK 3.1.3でこの目標を達成する方法は?

+0

アレイをソートするためにasort/asortiをチェックしてください。 – Laurijssen

+0

gawk以外のawkや古いバージョンのgawkは、この機能をサポートしていません。 "定義された順序"と "この目標"を明確にする。特定の順序で配列を印刷することを検討していますか?そうであれば、順序は何か(最初の数値ソートかアルファベット順か...)ですか?あるいは、PROCINFO []を設定してあなたの例に示すような異なる配列の印刷配列を定義する仕組みを探していますか? –

答えて

4

orderの数値インデックスと最初の配列のキーを値として使用してください。複数示されている

for (i = 1; i < length(order); i++) { 
    print order[i], array[order[i]] 
} 

orderを構築し、あなたがarrayの鍵を防ぐために、arrayにキーが既に存在しているかどうかをチェックすることもできます。これで、順番にorderを反復処理し、arrayの値を調べることができます回。

+0

3.1.3に「長さ」機能はありません。ベンチミリア氏の機能(私の拡張機能付き)はhttp://stackoverflow.com/questions/9351902/how-can-i-get-the-length-of- an-array-in-awk/19411381#19411381または "order"の作成時に最後のインデックスを使用してください。 –

関連する問題