2

awkで次のことを行う簡単な方法はありますか?

  • データによる配列/ハッシュのソート
  • 文字列キーによるハッシュのソート
4

1 に答える 1

3

非常によく似た問題に対する他の人の回答は次のとおりです 。 http://www.computing.net/answers/unix/urgent-help-with-sorting-in-awk/4442.html

これは次のようなものになるはずです:

gawk 'BEGIN {c=1} { array[c] = sprintf ("%s %s", $2, $1); c++ } 
END { asort(array); for (x=1;x<c;x++) { print array[x] } }'

「gawk」を使用したことに注意してください。組み込みのソートが必要な場合は、gawk を使用します。

この例では、キーと値のペアの「スペースで区切られた」入力を受け取り、2 番目の値に基づいて並べ替えます (もちろん、値/キー形式で出力されますが、そこで何をしているのかがわかります)。

gawk に存在する配列に対してこれを行うには、同様のものを使用します。

awk または mawk を使用している場合は、man ページで使用できる多くのソート関数のいずれかを使用して、ソートを実行する必要があります。

gawk マンページから: AWK のすべての配列は連想的です。つまり、文字列値によってインデックスが付けられます。特殊な演算子 in を if または while ステートメントで使用して、配列に特定の値で構成されるインデックスがあるかどうかを確認できます。if (val in array) print array[val] 配列に複数の添字がある場合、array で (i, j) を使用します。

于 2008-09-20T00:05:30.980 に答える