0

カンマ区切りの列を持つテーブルがあり、指定した列のカンマ区切りの値を新しい行に区切りたい。たとえば、与えられたテーブルは

名前開始名2

A 1,2 X、a

B 5 Y、b

C 6,7,8 Z、c

そして、以下の表を取得するには、列2のコンマ区切り値を区切る必要があります

名前開始名2

A 1 X、a

A 2 X、a

B 5 Y、b

C 6 Z、c

C 7 Z、c

C 8 Z、c

ワークフローパイプを作成できるように、シェルスクリプトを使用した解決策があるかどうか疑問に思っています。注:元のテーブルには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 に答える