我有一个带有逗号分隔列的表,我想将指定列中的逗号分隔值分隔到新行。例如,给定的表是
名称 起始名称 2
A 1,2 X,a
B 5 是,b
C 6,7,8 Z,c
我需要分隔第 2 列中的逗号分隔值以获得下表
名称 起始名称 2
一个 1 X,一个
一个 2 X,一个
B 5 是,b
C 6 Z,c
C 7 Z,c
C 8 Z,c
我想知道是否有任何带有 shell 脚本的解决方案,以便我可以创建一个工作流管道。注意:原始表可能包含超过 3 列。
我有一个带有逗号分隔列的表,我想将指定列中的逗号分隔值分隔到新行。例如,给定的表是
名称 起始名称 2
A 1,2 X,a
B 5 是,b
C 6,7,8 Z,c
我需要分隔第 2 列中的逗号分隔值以获得下表
名称 起始名称 2
一个 1 X,一个
一个 2 X,一个
B 5 是,b
C 6 Z,c
C 7 Z,c
C 8 Z,c
我想知道是否有任何带有 shell 脚本的解决方案,以便我可以创建一个工作流管道。注意:原始表可能包含超过 3 列。
这个 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}}'