【发布时间】: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
提前致谢
【问题讨论】:
对文本文件中的行进行分组,并将相应的行聚合到列中
现有文本文件
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
提前致谢
【问题讨论】:
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 来存储当前记录的第一个字段。
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
【讨论】: