忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
论坛 程序设计 Shell 排序
最近访问板块 发新帖
查看: 681 | 回复: 6

[文本处理] 排序 [复制链接]

论坛徽章:
0
发表于 2017-08-21 12:55 |显示全部楼层
a        16
a        18
a        19
a        1n8
a        20
a        21
a        22
a        23
a        24
a        25
a        26
a        27
a        28
a        9n17
b        10n16
b        17n19
b        1n9
b        20n22
b        23n25

要排序成
a        1n8
a        9n17
a        16
a        18
a        19
a        20
a        21
a        22
a        23
a        24
a        25
a        26
a        27
a        28
b        1n9
b        10n16
b        17n19
b        20n22
b        23n25

awk怎么写,sed怎么写



论坛徽章:
53
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
发表于 2017-08-21 13:42 |显示全部楼层
  1. sort -k1,1 -k2n file
  2. a        1n8
  3. a        9n17
  4. a        16
  5. a        18
  6. a        19
  7. a        20
  8. a        21
  9. a        22
  10. a        23
  11. a        24
  12. a        25
  13. a        26
  14. a        27
  15. a        28
  16. b        1n9
  17. b        10n16
  18. b        17n19
  19. b        20n22
  20. b        23n25
复制代码

论坛徽章:
32
荣誉会员
日期:2011-11-23 16:44:17射手座
日期:2014-09-03 16:01:17天蝎座
日期:2014-08-21 17:18:48丑牛
日期:2014-08-29 16:06:45天秤座
日期:2014-08-29 10:12:18天秤座
日期:2014-08-26 16:18:20双子座
日期:2014-07-30 11:38:27寅虎
日期:2014-08-04 10:24:12IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
发表于 2017-08-25 23:37 |显示全部楼层
回复 1# ma3501406

两种办法? 确实不是在写作业 ?


论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之同曦
日期:2017-09-11 14:39:48
发表于 2017-09-08 11:50 |显示全部楼层
回复 1# ma3501406

  1. awk -F" +|n" '{a[$1][$2]=$0}END{PROCINFO["sorted_in"]="@ind_str_asc";for(i in a){PROCINFO["sorted_in"]="@ind_num_asc";for(j in a[i]){print a[i][j]}}}' file
复制代码

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-09-08 13:15 |显示全部楼层
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my $data = {};
  5. while(<DATA>){
  6.         my ($s, $id, @nums) = ($_, split(/\s+|n/));
  7.         push(@{$data->{$id}}, [@nums, $s]);
  8. }

  9. foreach(sort {$a cmp $b} keys %$data){
  10.         map {print($_->[-1])} sort {$a->[0] <=> $b->[0]} @{$data->{$_}};
  11. }

  12. __DATA__
  13. a        16
  14. a        18
  15. a        19
  16. a        1n8
  17. a        20
  18. a        21
  19. a        22
  20. a        23
  21. a        24
  22. a        25
  23. a        26
  24. a        27
  25. a        28
  26. a        9n17
  27. b        10n16
  28. b        17n19
  29. b        1n9
  30. b        20n22
  31. b        23n25
复制代码

论坛徽章:
0
发表于 2017-09-29 03:20 |显示全部楼层
回复 4# wh7211

有错误

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之同曦
日期:2017-09-11 14:39:48
发表于 2017-09-29 10:52 |显示全部楼层
回复 6# ma3501406

你把awk版本升级到4.0+就没错误了。
$ awk --version
GNU Awk 4.1.3, API: 1.1

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP