入力として次のデータがあります。
A 1,2
B 3,2,5
C 6,7
D 1,3,5,8
AWKを使用して次の出力をどのように取得できますか?
A 1
A 2
B 3
B 2
B 5
C 6
C 7
D 1
D 3
D 5
D 8
ベストアンサー1
$ awk -F '[ ,]' '{ for (i = 2; i <= NF; ++i) print $1, $i }' file
A 1
A 2
B 3
B 2
B 5
C 6
C 7
D 1
D 3
D 5
D 8
これは、行をスペースまたはカンマ区切りのフィールドで構成されるものとして扱います。各行について、awk
プログラムは行の最後まで第2のフィールドを繰り返す。各フィールドについて出力されます。最初現在のフィールドを持つ行のフィールド。