免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10931 | 回复: 17
打印 上一主题 下一主题

[文本处理] 请问如何用awk排序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-08-13 23:43 |只看该作者 |倒序浏览
有一个文件比较大,用sort -k 1 -nr 来排序速度比较慢,想用awk来试试, 不知怎么写好成,$1 为数字,按$1 从大到小来排序

论坛徽章:
0
2 [报告]
发表于 2013-08-14 00:05 |只看该作者
如果 $1 的数值相同,则都打印出来,比如
100    AAAA   BBBB  CCCC
100     rrrrrr   sxxx   eeee

这两行都要打印出来,谁在前后无所谓

论坛徽章:
0
3 [报告]
发表于 2013-08-14 01:27 |只看该作者
自已写了一个,性能不太好,麻烦各位优化一下

awk '{a[$1"|"NR]=$0;b[$1]=$1} END {for(i=1;i<=asort(b);i++) for(j=1;j<=NR;j++) if(b[i]"|"j in a) print a[b[i]"|"j]}'  urfile

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
4 [报告]
发表于 2013-08-14 07:17 |只看该作者
本帖最后由 yinyuemi 于 2013-08-14 08:37 编辑

回复 3# dmidecode
  1. awk '{a[b[$1]=$1]=a[$1]?a[$1] RS $0:$0}END{for(i=1;i<=asort(b);i++)print a[b[i]]}' urfile
  2. 没测试, 不过印象中,如果只是排序,没有别的文本处理要求的话,sort 应该是最快的
复制代码

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
5 [报告]
发表于 2013-08-14 09:15 |只看该作者
如果是$1 排序的话,直接
  1. sort  -nr
复制代码

论坛徽章:
0
6 [报告]
发表于 2013-08-14 09:42 |只看该作者
回复 5# rdcwayx


    文件比较大,在使用sort时会在/tmp下产生一临时文件,提示空间不够,同时速度也比较的慢,所以才想用awk来试试

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
7 [报告]
发表于 2013-08-14 09:45 |只看该作者
回复 6# dmidecode

带个 -T 参数即可,指定一个大目录做临时交换目录。
  1.      -T directory    Specifies the directory in  which  to  place
  2.                      temporary files.
复制代码

论坛徽章:
0
8 [报告]
发表于 2013-08-14 10:07 |只看该作者
回复 4# yinyuemi

这个可以,不过性能好像不行,一个10G文件跑了1小时还没有完,

   

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
9 [报告]
发表于 2013-08-14 11:01 |只看该作者
你这个文件用awk 统计$1字段要多长时间,统计出的$1字段种类数多吗?不多的话将每一行打印到以$1为文件名的文件中。不知可行。@dmidecode

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
10 [报告]
发表于 2013-08-14 12:13 |只看该作者
回复 8# dmidecode


    10g的文件!用c写吧,或者楼上的方法也可以试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP