V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
artandlol
V2EX  ›  Linux

遇到个小问题

  •  
  •   artandlol · 2017-10-26 16:19:19 +08:00 · 2905 次点击
    这是一个创建于 2345 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如何把如下

    master g y9_5 5
    slave g y9_6 6
    master g y5_1 1
    slave g y5_2 2
    slave g y5_3 3
    

    打印成

    1 master G y9_5 6
    1 slave G y9_6 
    2 master G y5_1 2,3
    2 slave G y5_2 
    2 slave G y5_3 
    
    24 条回复    2017-10-27 15:53:28 +08:00
    artandlol
        1
    artandlol  
    OP
       2017-10-26 16:54:00 +08:00
    感觉没什么难度,但是想不出来怎么搞
    araraloren
        2
    araraloren  
       2017-10-26 17:14:18 +08:00
    这个不是很简单么,先吧 master slave 分类,然后根据 y{x} 来输出
    GentleSadness
        3
    GentleSadness  
       2017-10-26 17:21:53 +08:00
    没看出逻辑联系
    artandlol
        4
    artandlol  
    OP
       2017-10-26 17:31:53 +08:00
    @araraloren 来来 奉献你的代码
    jason2017
        5
    jason2017  
       2017-10-26 17:37:38 +08:00   ❤️ 8
    第一次见到求人还趾高气昂的。
    另外,连问题都描述不清楚,你还是转行吧。
    artandlol
        6
    artandlol  
    OP
       2017-10-26 17:45:10 +08:00
    @jason2017 88 隐藏
    artandlol
        7
    artandlol  
    OP
       2017-10-26 17:47:05 +08:00
    差不多好了。另 心态不好的麻烦别来回帖
    ToughGuy
        8
    ToughGuy  
       2017-10-26 17:49:22 +08:00
    刚开始尝试用 awk 发现挺麻烦,然后用 python 弄出来。。。

    到这一看楼主这态度, 我还是不贴出来献丑了。
    artandlol
        9
    artandlol  
    OP
       2017-10-26 17:59:52 +08:00 via Android
    @ToughGuy 也是用 py 弄的,搞定
    另 这么容易被带节奏?
    artandlol
        10
    artandlol  
    OP
       2017-10-26 18:02:21 +08:00 via Android
    看不懂把什么打印成什么? 看来是我老了
    lululau
        11
    lululau  
       2017-10-26 18:10:10 +08:00   ❤️ 2
    你连规则都懒得说明一下,那我只能告诉你,把你想要的结果 echo 一下就打印出来了
    artandlol
        12
    artandlol  
    OP
       2017-10-26 18:31:51 +08:00
    @lululau 谢谢
    Konki
        13
    Konki  
       2017-10-26 18:42:16 +08:00
    这个还是比较有规律的就是第三段,yA_b,c,d 是排序的,如果数量多,混杂,那就麻烦一点了
    这可以按行读取成 list,['master','g',y9',[5]]
    对于 list[1]进行 upper,list[2]按'-'分割保留前部分,后部分放到 list[3],也是一个 list
    list[2]进行判断,与 i-1 即上一位的 list[2]判定相同即把 list[3]塞到 i-1 的 list[3]
    coderluan
        14
    coderluan  
       2017-10-26 18:47:47 +08:00
    奉献:
    释义:“奉”,即“捧”,意思是“给、献给”;“献”,原意为“献祭”,指“把实物或意见等恭敬庄严地送给集体或尊敬的人”。
    jlsk
        15
    jlsk  
       2017-10-26 18:56:17 +08:00
    傻逼
    artandlol
        16
    artandlol  
    OP
       2017-10-26 19:25:37 +08:00 via Android
    沉了吧,情商低,无意冒犯。
    只是,觉得,风气不在
    momocraft
        17
    momocraft  
       2017-10-26 20:03:14 +08:00
    排斥低水平討論對社區不一是壞事 (當然對你不一定是好事)
    araraloren
        18
    araraloren  
       2017-10-26 20:20:54 +08:00   ❤️ 1
    my @all = [.words for q:to/EOF/.lines];
    master g y9_5 5
    slave g y9_6 6
    master g y5_1 1
    slave g y5_2 2
    slave g y5_3 3
    EOF
    my %all = @all.classify({ .[0] });

    for @(%all<master>) {
    my $y = (.[2] ~~ /^y(\d+)/).[0].Str;
    my @slave = %all<slave>.grep({ .[2] ~~ /^y"$y"/ });
    print [ .[0], .[1].uc, | .[2..*-2] ].join(" "), " ";
    say @(@slave>>.[3]).join(" ");
    say .[0..*-2].join(" ") for @slave;
    }

    run: https://ideone.com/CpzgdT
    artandlol
        19
    artandlol  
    OP
       2017-10-26 20:36:37 +08:00 via Android
    @momocraft 也不知道这也能刺疼别人,毕竟都是陌生人。当然也希望大家都有一颗强大的内心。
    谢谢,沉了吧
    ryd994
        20
    ryd994  
       2017-10-26 21:10:17 +08:00 via Android
    不合格的运维表示只会用 python 做
    scriptB0y
        21
    scriptB0y  
       2017-10-26 22:24:48 +08:00
    yiyiwa
        22
    yiyiwa  
       2017-10-27 12:51:05 +08:00   ❤️ 1
    awk 'NR==FNR{if(/^m/)i++;else a[i]=a[i]?a[i]","$NF:$NF;next}/^m/{j++}{NF--;print j,$0,(/^m/?a[j]:n)}' a a
    1 master g y9_5 6
    1 slave g y9_6
    2 master g y5_1 2,3
    2 slave g y5_2
    2 slave g y5_3
    MyPassWordis
        23
    MyPassWordis  
       2017-10-27 15:25:58 +08:00   ❤️ 1
    没感觉楼主语气有什么问题,部分人性格不合不能理解玩笑就不要回复不就好了?非要评论下面酸一下我也是不懂。。。 论坛本来就是为了聚集志同道合的人的,道不同不相为谋转头就走呗
    artandlol
        24
    artandlol  
    OP
       2017-10-27 15:53:28 +08:00 via Android
    确实是用开玩笑的语气说,只是玩笑的方式有时会造成锋芒毕露成了别人扣帽子的把柄。
    @MyPassWordis 谢谢啦。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5385 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 06:53 · PVG 14:53 · LAX 23:53 · JFK 02:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.