0

我有一个带有逗号分隔列的表,我想将指定列中的逗号分隔值分隔到新行。例如,给定的表是

名称 起始名称 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 列。

4

1 回答 1

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}}'
于 2012-12-04T19:40:30.330 回答