免费注册 查看新帖 |

Chinaunix

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

排序问题又来啦 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-30 17:20 |只看该作者 |倒序浏览
文本:
wincfg_ea.xml dv,jp,ln,va,hk
wincfg_eaa.xml sj,dv,jp,ln,hk
wincfg_eab.xml sj,dv,jp,ln,hk

输出:
wincfg_ea.xml
dv
hk
ln
jp
va
wincfg_eaa.xml
dv
hk
jp
ln
sj
wincfg_eab.xml
dv
hk
jp
ln
sj

注意,dv, hk。。。这些是需要排序的。

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
2 [报告]
发表于 2010-12-30 17:44 |只看该作者
awk 'BEGIN{FS=" |,"}{close("sort");print $1;print $2"\n"$3"\n"$4"\n"$5"\n"$6|"sort"}' file

论坛徽章:
0
3 [报告]
发表于 2010-12-30 17:51 |只看该作者
awk 'BEGIN{FS=" |,"}{close("sort");print $1;print $2"\n"$3"\n"$4"\n"$5"\n"$6|"sort"}' file
ziyunfei 发表于 2010-12-30 17:44


如果域number不是固定的呢?即可能文本如下:
wincfg_ea.xml dv,jp,ln,va
wincfg_eaa.xml sj,dv,jp,ln,hk,cn,id
wincfg_eab.xml sj,dv,jp,ln,hk

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2010-12-30 17:53 |只看该作者
  1. #! /usr/bin/perl
  2. #pl037
  3. open(LINES,"lines009");
  4. chomp(@lines = <LINES>);
  5. for (@lines){
  6.     @line = split /[ ,]/;
  7.     print shift(@line);
  8.     print "\n";
  9.     print "$_\n" for sort(@line);
  10. }
复制代码
./pl037
wincfg_ea.xml
dv
hk
jp
ln
va
wincfg_eaa.xml
dv
hk
jp
ln
sj
wincfg_eab.xml
dv
hk
jp
ln
sj

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
5 [报告]
发表于 2010-12-30 18:17 |只看该作者
awk '{close("sort");print $1;sub($1" ","");gsub(/,/,"\n");print|"sort"}' file

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2010-12-30 18:33 |只看该作者
文本:
wincfg_ea.xml dv,jp,ln,va,hk
wincfg_eaa.xml sj,dv,jp,ln,hk
wincfg_eab.xml sj,dv,jp,ln,hk
...
blackxie 发表于 2010-12-30 17:20
楼主你自己的排序都错了。按照顺序应该这样子。
  1. $ awk 'BEGIN{FS="[ ,]"}{for(i=1;i<NF;i++)str[i]=$(i+1)}{asort(str);print $1;for(i=1;i<NF;i++) print str[i]}' a.txt
  2. wincfg_ea.xml
  3. dv
  4. hk
  5. jp
  6. ln
  7. va
  8. wincfg_eaa.xml
  9. dv
  10. hk
  11. jp
  12. ln
  13. sj
  14. wincfg_eab.xml
  15. dv
  16. hk
  17. jp
  18. ln
  19. sj
复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2010-12-30 18:40 |只看该作者
如果域number不是固定的呢?即可能文本如下:
wincfg_ea.xml dv,jp,ln,va
wincfg_eaa.xml sj,dv,jp,l ...
blackxie 发表于 2010-12-30 17:51
  1. $ awk 'BEGIN{FS="[ ,]"}{for(i=1;i<NF;i++)str[i]=$(i+1)}{asort(str);print $1;for(i=1;i<NF;i++) print str[i]}' a.txt
  2. wincfg_ea.xml
  3. dv
  4. jp
  5. ln
  6. va
  7. wincfg_eaa.xml
  8. cn
  9. dv
  10. hk
  11. id
  12. jp
  13. ln
  14. sj
  15. wincfg_eab.xml
  16. dv
  17. hk
  18. jp
  19. ln
  20. ln
复制代码

论坛徽章:
0
8 [报告]
发表于 2010-12-30 18:46 |只看该作者
很简单 啊,上面的搞得复杂了
sed 's/[ ,]/\n/g' file

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2010-12-30 18:52 |只看该作者
很简单 啊,上面的搞得复杂了
sed 's/[ ,]/\n/g' file
freecr_cu 发表于 2010-12-30 18:46
注意,人家是要排序的。替换倒是很简单的。

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
10 [报告]
发表于 2010-12-31 05:00 |只看该作者
  1. $ cat 1

  2. wincfg_ea.xml dv,jp,ln,va
  3. wincfg_eaa.xml sj,dv,jp,ln,hk,cn,id
  4. wincfg_eab.xml sj,dv,jp,ln,hk

  5. $ cat 1 |awk -v RS=" |,|\n" '/win/{p=1;close("sort")}!/win/{p=0;print |"sort"}p'

  6. wincfg_ea.xml
  7. dv
  8. jp
  9. ln
  10. va
  11. wincfg_eaa.xml
  12. cn
  13. dv
  14. hk
  15. id
  16. jp
  17. ln
  18. sj
  19. wincfg_eab.xml
  20. dv
  21. hk
  22. jp
  23. ln
  24. sj
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP