使用 AWK 更改两列的格式

yas*_*neh 4 awk text-processing

我有以下数据作为输入:

A 1,2
B 3,2,5
C 6,7
D 1,3,5,8
Run Code Online (Sandbox Code Playgroud)

如何使用 AWK 获得以下输出?

A 1
A 2
B 3
B 2
B 5
C 6
C 7
D 1
D 3
D 5
D 8
Run Code Online (Sandbox Code Playgroud)

Kus*_*nda 8

$ 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
Run Code Online (Sandbox Code Playgroud)

这会将行视为由以空格或逗号分隔的字段组成。对于每一行,awk程序将迭代第二个字段直到行尾。对于每个字段,它与当前字段一起输出该行的第一个字段。


JJo*_*oao 5

awk '{gsub(/,/,  "\n" $1 " "); print}' file
Run Code Online (Sandbox Code Playgroud)

在这个解决方案中,我们只是将每个“ ,”替换为"\n$1 "