【问题标题】:Group rows in text file and aggregate corresponding rows to column对文本文件中的行进行分组并将相应的行聚合到列
【发布时间】:2012-07-10 17:21:18
【问题描述】:

对文本文件中的行进行分组,并将相应的行聚合到列中

现有文本文件

John|Life
John|Temp
John|Admin
Peter|Life
Peter|Admin
Matt|Life
Matt|Admin
Matt|Temp

期望的输出

John|Life,Temp,Admin
Peter|Life,Admin
Matt|Life,Temp,Admin

提前致谢

【问题讨论】:

    标签: bash awk


    【解决方案1】:

    命令

    awk -F '|' '
    $1==x{
        printf ",%s", $2
        next
    }
    {
        x=$1
        printf "\n%s|%s", $1, $2
    }
    END {
        printf "\n"
    }' input.txt
    

    结果

    John|Life,Temp,Admin
    Peter|Life,Admin
    Matt|Life,Admin,Temp
    

    【讨论】:

    • 我使用x 来存储当前记录的第一个字段。
    【解决方案2】:

    sed 解决方案:

    sed -e ':a;$!{N;ba};:p' \
     -e 's/^\([^|\n]*|\)\([^\n]*\)\(.*\n\)\1\([^|\n]*\)/\1\2,\4\3/' \
     -e 'tp;s/\n*\n/\n/;P;D;bp' filename
    

    【讨论】:

      猜你喜欢
      • 2013-09-27
      • 2021-10-06
      • 1970-01-01
      • 2020-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多