我有一个包含逗号分隔列的表,我想将指定列中的逗号分隔值分隔为新行。例如,给定的表是
名称开始名称2
1,2 X,a
B 5 Y,b
C 6,7,8 Z,c
我需要将第2列中的逗号分隔值分开以获得下面的表格
名称开始名称2
1 X,a
A 2 X,a
B 5 Y,b
C 6 Z,c
C 7 Z,c
C 8 Z,c
我想知道是否有任何shell脚本解决方案,以便我可以创建一个工作流管道。注意:原始表可能包含3列以上。
答案 0 :(得分:0)
此bash解决方案可生成所需的输出
{
read header; echo "$header"
while read name start rest; do
for elem in $(tr , " " <<< "$start"); do
echo "$name $elem $rest"
done
done
} << END
Name Start Name2
A 1,2 X,a
B 5 Y,b
C 6,7,8 Z,c
END
更简洁
awk 'NR==1 {print; next} {split($2,a,/,/); for (i in a) {$2=a[i]; print}}'