awk で重複した要素をユニークな要素だけにする方法
awk でやってみましたが、Perl のようにスマートじゃないですね。また、以下のものはそんなに汎用性があるわけではありません。
#! /usr/bin/gawk -f BEGIN { for (i = 1; i <= 10; i++) { arr[i] = int(i / 2); } print "***** not be uniqed."; for (i in arr) { print arr[i]; } uniq_array(arr); print "***** be uniqed."; for (i in arr) { print arr[i]; } } # uniq_array - sort array and uniq array # input: array # output: sorted and uniqed array function uniq_array(arr, i, n_arr) { n_arr = asort(arr); for (i = 1; i < n_arr; i++) { if (arr[i] == arr[i + 1]) { delete arr[i]; } } }
結果はこんな感じ。
$ gawk -f uniq_array.awk ***** not be uniqed. 2 2 3 3 4 4 5 0 1 1 ***** be uniqed. 2 3 4 5 0 1