免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3375 | 回复: 19

[游戏娱乐] 写一个sed [复制链接]

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
发表于 2013-03-14 20:20 |显示全部楼层
得出一行中最大的数
比如
00123xdsd0176ddsdw201eew
得出201 19
19为其位置

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
发表于 2013-03-14 20:38 |显示全部楼层
比较大小和找出位置貌似不是sed的专长哦~可以用awk么?如果要用sed的话,可以借助shell么?

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
发表于 2013-03-14 21:11 |显示全部楼层
我写了个awk的~
  1. awk '{for(i=1;i<=split($0,a,"[^0-9]*");i++){if(a[i]!=""){a[i]+=0;max=max!=""?max>a[i]?max:a[i]:a[i]}}print max,match($0,max)}'
复制代码

论坛徽章:
38
辰龙
日期:2013-08-21 15:45:19寅虎
日期:2014-06-09 12:52:17双鱼座
日期:2014-06-10 12:42:44巨蟹座
日期:2014-06-12 23:17:17戌狗
日期:2014-06-17 09:53:29未羊
日期:2014-10-10 13:45:41申猴
日期:2015-03-03 17:21:37亥猪
日期:2015-03-03 17:22:002015亚冠之广州富力
日期:2015-05-12 16:34:522015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:08平安夜徽章
日期:2015-12-26 00:06:30
发表于 2013-03-14 21:52 |显示全部楼层
本帖最后由 关阴月飞 于 2013-03-14 22:13 编辑
  1. awk -F'[^0-9]+' '{a=$0;for(i=1;i<=NF;i++)if(b<$i){b=$i};print b,index(a,b)}'
复制代码

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
发表于 2013-03-14 21:53 |显示全部楼层
本帖最后由 yinyuemi 于 2013-03-14 22:39 编辑



写起来有麻烦,有个思路,
1. 写个把数字转成长度为该数字的字符串的循环(也可以叫函数),可以表示数字大小
之前写个一个类似的:
  1. echo 20 |sed '
  2. :a
  3.    /[^0]$/s//x&/
  4.    /.0*$/s//x&/
  5.    H
  6.    s/.*x//
  7.    y/1234567890/0123456789/
  8.    x
  9.    s/x.*//
  10.    G
  11.    s/\(.*\)\n/\1/
  12.    s/\n0/\n/
  13.    h
  14.    s/.*\n//
  15.    /^1$/! ta
  16. x;
  17. s/[0-9]\+/x/g
  18. s/\n//g
  19. '
  20. xxxxxxxxxxxxxxxxxxx
复制代码
2. 反过来,写个把字符长度转成数字的循环,记录位置
感兴趣的可以,把上面的code改改就行

最后在PS和HS里反复蹂躏数据应该可以实现

论坛徽章:
0
发表于 2013-03-14 22:44 |显示全部楼层
  1. x; s/^/1/; x;

  2. :1
  3. /^[0-9]/ {
  4.         G; s/([0-9]*)(.*\n)(.*)/\1\2\1 \3/;
  5.         :2 s/^([0-9]*)[0-9]/\1@/; t2
  6. }

  7. s/.//; x;
  8. s/.*/0&@/; :3 s/9@/@0/; t3
  9. s/@/@0123456789@/;
  10. s/(.)@[^@]*\1(.).*@/\2/;
  11. s/0*//;

  12. x; /^\n/!b1

  13. :4
  14. /.*\n(.*\n)/ {
  15.         x; g; s//\1/;
  16.         s/^0*| .*$//Mg;

  17.         :5 s/(.)(\n[0-9]*)([0-9])(.*)/\2\4#\1\3/; t5
  18.         /(^|\n)[0-9]/! {
  19.                 :6 s/#(.)\1$//; t6
  20.                 s/$/0123456789/;
  21.                 s/#([0-9])([0-9])[^#]*\1[^#]*\2/</;
  22.                 /</! s/^/>/;
  23.         }
  24.         /[<>]/! s/^[0-9]/>/;
  25.         /[<>]/! s/^/</;
  26.         s/[^<>]//g
  27.        
  28.         x; G;
  29.         s/\n[^\n]*(\n[^\n]*)\n</\1/;
  30.         s/\n[^\n]*\n>//;
  31.         b4
  32. }
复制代码

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
发表于 2013-03-14 22:46 |显示全部楼层
本帖最后由 yinyuemi 于 2013-03-14 23:06 编辑

回复 6# hbmhalley


    牛~~

   学习了,非常好的思路~~

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
发表于 2013-03-14 23:43 |显示全部楼层
@关阴月飞
a=$0多余了~
  1. awk -F "[^0-9]*" '{for(i=1;i<=NF;i++)if($i>a)a=$i;print a,match($0,a)}'
复制代码
@hbmhalley
佩服佩服~

论坛徽章:
38
辰龙
日期:2013-08-21 15:45:19寅虎
日期:2014-06-09 12:52:17双鱼座
日期:2014-06-10 12:42:44巨蟹座
日期:2014-06-12 23:17:17戌狗
日期:2014-06-17 09:53:29未羊
日期:2014-10-10 13:45:41申猴
日期:2015-03-03 17:21:37亥猪
日期:2015-03-03 17:22:002015亚冠之广州富力
日期:2015-05-12 16:34:522015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:08平安夜徽章
日期:2015-12-26 00:06:30
发表于 2013-03-15 00:10 |显示全部楼层
回复 8# yestreenstars


    确实, 学习了...

论坛徽章:
92
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2015-02-28 17:45:34CU大牛徽章
日期:2019-10-10 10:55:38ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:28CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
发表于 2013-03-15 10:13 |显示全部楼层
哇,要好好学一下。下午有时间看看,先马克一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。




----------------------------------------

大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP