您的位置:首页 > 其它

awk之数组排序(省略 | sort)

2012-02-20 10:47 417 查看

[转]awk之数组排序(省略 | sort)

(2011-11-29 14:22:59)


转载▼

标签:

it

分类:每天一滴
catfile 

a

b

a

c

e

e

a

b

e

要求统计文中字母出现的次数,并按次数降序输出:

awk '{a[$1]++}END{for(i in a)print
i,a[i]}' file | sort-k2nr

a 3

e 3

b 2

c 1

文本的关键是如何省略掉管道:

awk '{

    a[$1]++

}END{

    l=asort(a,b);

    for(n=l;n>0;n--){

        for(i in a){

            if(a[i]==b[n]){

                printi,a[i];

                deletea[i];

                break;

            }

        }

    }

}' file

[解析]

首先统计字母出现的次数,最后在 END 中利用asort 对数组a的值进行排序,并把排序结果保存到数组b中。然后开始降序输出用 b
的值判断是否与 a[i]的值相等,相等就打印出下标和其对应的值,然后从数组a中删除该下标,以免以后的循环再匹配到该下表的值。要是从小到大输出只须更改for循环即可。

http://blog.chinaunix.net/space.php?uid=10540984&do=blog&id=3027883
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  file c