动态更改 AWK 字段分隔符

Rya*_*n R 5 linux bash awk

我想使用 AWK 来获取以下电子表格,其中名字和姓氏在一列中:

Peter Griffin, 31 Spooner St, Quahog
Homer Simpson, 732 Evergreen Terr, Springfield
Fred Flintstone, 301 Cobblestone Way, Bedrock
Run Code Online (Sandbox Code Playgroud)

并输出到一个新的电子表格,其中名字和姓氏有自己的列:

Peter, Griffin, 31 Spooner St, Quahog
Homer, Simpson, 732 Evergreen Terr, Springfield
Fred, Flintstone, 301 Cobblestone Way, Bedrock
Run Code Online (Sandbox Code Playgroud)

我尝试过动态更改字段分隔符,例如:

awk '{print $1 "," $2} {FS=","} {print $3} {FS=" "}' spreadsheet.csv
Run Code Online (Sandbox Code Playgroud)

但它似乎并没有那样工作,而且我弄得一团糟。这可以使用 AWK 吗?

fed*_*qui 2

,每当在第一个基于字段中找到空格时,只需添加一个逗号:

awk 'BEGIN {FS=OFS=","} {sub(/ /, ", ", $1)}1' file
#                             ^    ^^
#               find a space...    ... replace it with , plus space
Run Code Online (Sandbox Code Playgroud)

与您的文件:

$ awk 'BEGIN {FS=OFS=","} {sub(/ /, ", ", $1)}1' file
Peter, Griffin, 31 Spooner St, Quahog
Homer, Simpson, 732 Evergreen Terr, Springfield
Fred, Flintstone, 301 Cobblestone Way, Bedrock
Run Code Online (Sandbox Code Playgroud)

这使用该函数sub()在第一个字段中执行替换。