Linuxでawkスクリプトをソートする方法は?

Linuxでawkスクリプトをソートする方法は?

私のファイルにはfruit次の内容が含まれています。

Apples, 12
Pears, 50
Cheries, 7
Strawberries, 36
Oranges, 2

ファイルの数値データをソートしたいです。

for(i=1;i<=NF;i++)j+=$i;printf "Fruit %d%s, %d\n",NR,OFS,$1,j | sort -k 2 > "numbers"; j=0"

awkスクリプトを実行するには、次のコマンドを実行します。

awk -f numbers fruit

デジタルファイルの内容は果物と同じですが、最初と2番目のフィールドがデジタルファイルにコピーされます。

ベストアンサー1

GNU awkは、配列のナビゲーション方法を制御するための賢い方法を提供します。配列巡回制御そして制御スキャン

gawk -F', ' '
    {fruit[$1] = $2}
    END {
        OFS = FS

        printf "\nordered by fruit name\n"
        PROCINFO["sorted_in"] = "@ind_str_asc"
        for (f in fruit) print f, fruit[f]

        printf "\nordered by number\n"
        PROCINFO["sorted_in"] = "@val_num_desc"
        for (f in fruit) print f, fruit[f]
    }
' fruit

出力

ordered by fruit name
Apples, 12
Cheries, 7
Oranges, 2
Pears, 50
Strawberries, 36

ordered by number
Pears, 50
Strawberries, 36
Apples, 12
Cheries, 7
Oranges, 2

おすすめ記事