忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
楼主: 夏寥寥

[文本处理] 如何按照出生日期从小到大排序如下内容 [复制链接]

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之同曦
日期:2017-09-11 14:39:482016科比退役纪念章
日期:2018-01-19 12:45:59CU十四周年纪念徽章
日期:2018-03-16 13:09:5315-16赛季CBA联赛之北京
日期:2018-03-23 15:24:0715-16赛季CBA联赛之辽宁
日期:2018-04-02 14:03:39
发表于 2018-04-11 15:10 |显示全部楼层
本帖最后由 wh7211 于 2018-04-11 15:12 编辑

回复 9# Windows19


大哥  借题请问一下  从大到小排又怎样的呢

<<<awk4.0+
  1. awk -F "" '{gsub(" ","");a=substr($0,NF-11,8);b[a]=$0}END{PROCINFO["sorted_in"]="@ind_num_desc";for(i in b){print b[i]}}' file
复制代码

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之同曦
日期:2017-09-11 14:39:482016科比退役纪念章
日期:2018-01-19 12:45:59CU十四周年纪念徽章
日期:2018-03-16 13:09:5315-16赛季CBA联赛之北京
日期:2018-03-23 15:24:0715-16赛季CBA联赛之辽宁
日期:2018-04-02 14:03:39
发表于 2018-04-11 15:16 |显示全部楼层
本帖最后由 wh7211 于 2018-04-11 15:17 编辑

回复 10# Windows19


  1. 『-F ""』:改变域分隔
  2. 『gsub(" ","")』:把源文件中的空格去掉
  3. 『substr($0,NF-11,8)』:取出需要排序的8位数字
复制代码

求职 : Linux运维
论坛徽章:
10
丑牛
日期:2013-11-22 14:59:41数据库技术版块每日发帖之星
日期:2016-08-13 06:20:0015-16赛季CBA联赛之山西
日期:2016-08-03 10:35:38数据库技术版块每日发帖之星
日期:2016-07-31 06:20:002016科比退役纪念章
日期:2016-06-27 14:08:14数据库技术版块每日发帖之星
日期:2016-06-02 06:20:0015-16赛季CBA联赛之广东
日期:2016-05-20 15:06:2215-16赛季CBA联赛之深圳
日期:2016-01-29 16:27:402015亚冠之阿尔艾因
日期:2015-09-08 16:35:3615-16赛季CBA联赛之北京
日期:2017-03-28 18:45:36
发表于 2018-04-11 15:28 |显示全部楼层
本帖最后由 夏寥寥 于 2018-04-12 09:10 编辑

回复 3# jason680

大神,不知道为啥,我这允许发现结果是空的。

  1. [root@RHEL6 scripts]# awk 'match($0,"([0-9]{5}.+)",m){a[substr(m[1],7,8)]=$0}END{t=asorti(a,b);for(n=1;n<=t;n+=1)print a[b[n]]}' sort.txt
  2. [root@RHEL6 scripts]#
复制代码



求职 : Linux运维
论坛徽章:
10
丑牛
日期:2013-11-22 14:59:41数据库技术版块每日发帖之星
日期:2016-08-13 06:20:0015-16赛季CBA联赛之山西
日期:2016-08-03 10:35:38数据库技术版块每日发帖之星
日期:2016-07-31 06:20:002016科比退役纪念章
日期:2016-06-27 14:08:14数据库技术版块每日发帖之星
日期:2016-06-02 06:20:0015-16赛季CBA联赛之广东
日期:2016-05-20 15:06:2215-16赛季CBA联赛之深圳
日期:2016-01-29 16:27:402015亚冠之阿尔艾因
日期:2015-09-08 16:35:3615-16赛季CBA联赛之北京
日期:2017-03-28 18:45:36
发表于 2018-04-11 15:29 |显示全部楼层
本帖最后由 夏寥寥 于 2018-04-12 09:11 编辑

回复 3# jason680

大神,不知道为啥,我这允许发现结果是空的。

  1. [root@RHEL6 scripts]# awk 'match($0,"([0-9]{5}.+)",m){a[substr(m[1],7,8)]=$0}END{t=asorti(a,b);for(n=1;n<=t;n+=1)print a[b[n]]}' sort.txt
  2. [root@RHEL6 scripts]#
复制代码

求职 : Linux运维
论坛徽章:
10
丑牛
日期:2013-11-22 14:59:41数据库技术版块每日发帖之星
日期:2016-08-13 06:20:0015-16赛季CBA联赛之山西
日期:2016-08-03 10:35:38数据库技术版块每日发帖之星
日期:2016-07-31 06:20:002016科比退役纪念章
日期:2016-06-27 14:08:14数据库技术版块每日发帖之星
日期:2016-06-02 06:20:0015-16赛季CBA联赛之广东
日期:2016-05-20 15:06:2215-16赛季CBA联赛之深圳
日期:2016-01-29 16:27:402015亚冠之阿尔艾因
日期:2015-09-08 16:35:3615-16赛季CBA联赛之北京
日期:2017-03-28 18:45:36
发表于 2018-04-11 15:30 |显示全部楼层
回复 3# jason680

大神,不知道为啥,我这允许发现结果是空的。

  1. [root@RHEL6 scripts]# awk 'match($0,"([0-9]{5}.+)",m){a[substr(m[1],7,8)]=$0}END{t=asorti(a,b);for(n=1;n<=t;n+=1)print a[b[n]]}' sort.txt
  2. [root@RHEL6 scripts]#
复制代码

求职 : Linux运维
论坛徽章:
10
丑牛
日期:2013-11-22 14:59:41数据库技术版块每日发帖之星
日期:2016-08-13 06:20:0015-16赛季CBA联赛之山西
日期:2016-08-03 10:35:38数据库技术版块每日发帖之星
日期:2016-07-31 06:20:002016科比退役纪念章
日期:2016-06-27 14:08:14数据库技术版块每日发帖之星
日期:2016-06-02 06:20:0015-16赛季CBA联赛之广东
日期:2016-05-20 15:06:2215-16赛季CBA联赛之深圳
日期:2016-01-29 16:27:402015亚冠之阿尔艾因
日期:2015-09-08 16:35:3615-16赛季CBA联赛之北京
日期:2017-03-28 18:45:36
发表于 2018-04-11 15:32 |显示全部楼层
回复 3# jason680

谢谢您!可我运行的结果的为啥是空的呢?
  1. [root@RHEL6 scripts]# awk 'match($0,"([0-9]{5}.+)",m){a[substr(m[1],7,8)]=$0}END{t=asorti(a,b);for(n=1;n<=t;n+=1)print a[b[n]]}' sort.txt
  2. [root@RHEL6 scripts]#
复制代码


论坛徽章:
130
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07巳蛇
日期:2014-05-09 16:43:18巨蟹座
日期:2014-10-23 17:48:38子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59
发表于 2018-04-11 15:35 |显示全部楼层
本帖最后由 jason680 于 2018-04-11 16:43 编辑

回复 14# 夏寥寥

$ awk -V
GNU Awk 4.1.3, API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0)
Copyright (C) 1989, 1991-2015 Free Software Foundation.



try below argument if yor awk is version3

    -P            --posix
    -r            --re-interval

awk -P ...
awk --posix ...
awk -r ...
awk --re-interval ...


求职 : Linux运维
论坛徽章:
10
丑牛
日期:2013-11-22 14:59:41数据库技术版块每日发帖之星
日期:2016-08-13 06:20:0015-16赛季CBA联赛之山西
日期:2016-08-03 10:35:38数据库技术版块每日发帖之星
日期:2016-07-31 06:20:002016科比退役纪念章
日期:2016-06-27 14:08:14数据库技术版块每日发帖之星
日期:2016-06-02 06:20:0015-16赛季CBA联赛之广东
日期:2016-05-20 15:06:2215-16赛季CBA联赛之深圳
日期:2016-01-29 16:27:402015亚冠之阿尔艾因
日期:2015-09-08 16:35:3615-16赛季CBA联赛之北京
日期:2017-03-28 18:45:36
发表于 2018-04-11 15:39 |显示全部楼层
本帖最后由 夏寥寥 于 2018-04-12 09:04 编辑

回复 3# jason680

前几次的回复提交时总是报错。

论坛徽章:
22
2015年亚洲杯之科威特
日期:2015-04-18 15:27:07每日论坛发贴之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之广夏
日期:2016-03-28 16:20:51程序设计版块每日发帖之星
日期:2016-04-09 06:20:00CU十四周年纪念徽章
日期:2016-05-03 09:35:1415-16赛季CBA联赛之天津
日期:2016-11-18 08:31:3115-16赛季CBA联赛之山西
日期:2016-12-07 16:29:5315-16赛季CBA联赛之八一
日期:2017-01-10 11:34:3415-16赛季CBA联赛之吉林
日期:2017-03-30 22:51:1915-16赛季CBA联赛之广夏
日期:2017-04-13 20:51:52程序设计版块每日发帖之星
日期:2016-01-27 06:20:00每日论坛发贴之星
日期:2015-12-28 06:20:00
发表于 2018-04-11 16:08 |显示全部楼层
回复 12# wh7211

嗯嗯,明白,$0,NF-11,8
从最后11位中取出8位数字排序


另外
如果要排序位置在开头那里或者在中间位置呢




论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之同曦
日期:2017-09-11 14:39:482016科比退役纪念章
日期:2018-01-19 12:45:59CU十四周年纪念徽章
日期:2018-03-16 13:09:5315-16赛季CBA联赛之北京
日期:2018-03-23 15:24:0715-16赛季CBA联赛之辽宁
日期:2018-04-02 14:03:39
发表于 2018-04-11 16:13 |显示全部楼层
回复 19# Windows19


位置在哪里都可以取,你看看substr函数的用法吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP