Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
artandlol
V2EX  ›  Linux

遇到个小问题

  •  
  •   artandlol · Oct 26, 2017 · 3544 views
    This topic created in 3137 days ago, the information mentioned may be changed or developed.

    如何把如下

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

    到这一看楼主这态度, 我还是不贴出来献丑了。
    artandlol
        9
    artandlol  
    OP
       Oct 26, 2017 via Android
    @ToughGuy 也是用 py 弄的,搞定
    另 这么容易被带节奏?
    artandlol
        10
    artandlol  
    OP
       Oct 26, 2017 via Android
    看不懂把什么打印成什么? 看来是我老了
    lululau
        11
    lululau  
       Oct 26, 2017   ❤️ 2
    你连规则都懒得说明一下,那我只能告诉你,把你想要的结果 echo 一下就打印出来了
    artandlol
        12
    artandlol  
    OP
       Oct 26, 2017
    @lululau 谢谢
    Konki
        13
    Konki  
       Oct 26, 2017
    这个还是比较有规律的就是第三段,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  
       Oct 26, 2017
    奉献:
    释义:“奉”,即“捧”,意思是“给、献给”;“献”,原意为“献祭”,指“把实物或意见等恭敬庄严地送给集体或尊敬的人”。
    jlsk
        15
    jlsk  
       Oct 26, 2017
    傻逼
    artandlol
        16
    artandlol  
    OP
       Oct 26, 2017 via Android
    沉了吧,情商低,无意冒犯。
    只是,觉得,风气不在
    momocraft
        17
    momocraft  
       Oct 26, 2017
    排斥低水平討論對社區不一是壞事 (當然對你不一定是好事)
    araraloren
        18
    araraloren  
       Oct 26, 2017   ❤️ 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
       Oct 26, 2017 via Android
    @momocraft 也不知道这也能刺疼别人,毕竟都是陌生人。当然也希望大家都有一颗强大的内心。
    谢谢,沉了吧
    ryd994
        20
    ryd994  
       Oct 26, 2017 via Android
    不合格的运维表示只会用 python 做
    scriptB0y
        21
    scriptB0y  
       Oct 26, 2017
    yiyiwa
        22
    yiyiwa  
       Oct 27, 2017   ❤️ 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  
       Oct 27, 2017   ❤️ 1
    没感觉楼主语气有什么问题,部分人性格不合不能理解玩笑就不要回复不就好了?非要评论下面酸一下我也是不懂。。。 论坛本来就是为了聚集志同道合的人的,道不同不相为谋转头就走呗
    artandlol
        24
    artandlol  
    OP
       Oct 27, 2017 via Android
    确实是用开玩笑的语气说,只是玩笑的方式有时会造成锋芒毕露成了别人扣帽子的把柄。
    @MyPassWordis 谢谢啦。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1101 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 75ms · UTC 17:58 · PVG 01:58 · LAX 10:58 · JFK 13:58
    ♥ Do have faith in what you're doing.