3

テキスト ファイル内の行をグループ化し、対応する行を列に集約する

既存のテキスト ファイル

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

前もって感謝します

4

2 に答える 2

4

指図

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
于 2012-07-09T06:47:39.343 に答える
1

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
于 2012-07-09T06:50:30.307 に答える