美文网首页
AWK 实现多行合并

AWK 实现多行合并

作者: CHMAX | 来源:发表于2022-04-26 19:02 被阅读0次

    在满足【自定义】行相等情况下,对其它需要的字段做合并

    场景:

    之前 之后
    A 1
    A 2
    B 3
    C 4
    C 5
    C 6
    ==> A ('1', '2')
    B ('3')
    C ('4', '5', '6')

    实现:

    $ awk '{
    lp[$1]=length(lp[$1])==0?"'\''"$2"'\''":lp[$1]", '\''"$2"'\''"
    }
    END{
    for (var in lp)
    print var, "("lp[var]")"
    }
    ' Test.txt
    

    原理

    lp[] 可视为字典

    首次访问时 lp[$1] 为空,赋值为 '$2',之后再次访问时,则赋值为 lp[$1] + , '$2'

    具体执行过程:

    1:lp[A]='1'
    2:lp[A]='1', '2'
    3:lp[A]='1', '2' lp[B]='3'
    ...
    6:lp[A]='1', '2' lp[B]='3' lp[C]='4', '5', '6'

    最后循环输出 lp[] 中的结果!

    相关文章

      网友评论

          本文标题:AWK 实现多行合并

          本文链接:https://www.haomeiwen.com/subject/dglhyrtx.html