- 论坛徽章:
- 8
|
本帖最后由 wiliiwin 于 2014-10-13 23:43 编辑
我是看了这个帖子http://bbs.chinaunix.net/thread-4157036-1-1.html,做了一下这个题,但是出现了一些问题,请大神指教下,代码如下:- awk -F "" '{for(i=1;i<=NF;i++){d[$i]=++d[$i]};for(x in d){if(d[x]>=2||x~/[^0-9a-zA-Z]/){max[NR]+=d[x]}}c[max[NR]]=$0;delete d}END{t=asorti(c,b);for(n=1;n<=t;n++)print c[b[n]]}' 15.txt
复制代码 输出结果如下,并不是题目所需要的结果,实在不知道是哪里有问题了- 452142122abcada
- abac45214
- abcaba4521
- abaac,45214a
复制代码 解决结果:- awk -F "" '{for(i=1;i<=NF;i++){d[$i]=++d[$i]};for(x in d){if(d[x]>=2||x~/[^0-9a-zA-Z]/){max[NR]+=d[x]}}c[max[NR]]=$0;delete d}END{t=asort(max,b);for(n=t;n>0;n--)print c[b[n]]}' 15.txt
- 452142122abcada
- abaac,45214a
- abcaba4521
- abac45214
复制代码 出错原因:- 之前不知道asorti是把数组的下标当字符串的,因此导致了排序不是按数字来排序的,因此导致了输出结果也没有按正常的输出
复制代码 |
|