在文件的每个“”之间添加一个逗号

Adding a comma in between every " " to a file

输入: "stuff blah mostuff" "stuff and blahagain" "stuff yeablah"

期望的输出:"stuff blah mostuff","stuff and blahagain","stuff yeablah"

如何使用 awk 执行此操作?

只需将 " " 替换为 ","

$ echo '"stuff blah mostuff" "stuff and blahagain" "stuff yeablah"' | awk '{gsub(/" "/,"\",\"")}1'
"stuff blah mostuff","stuff and blahagain","stuff yeablah"

通过sed,

$ echo '"stuff blah mostuff" "stuff and blahagain" "stuff yeablah"' | sed 's/"[[:blank:]]"/","/g'
"stuff blah mostuff","stuff and blahagain","stuff yeablah"
$ awk -F'" "' -v OFS='","' '{=}1' file
"stuff blah mostuff","stuff and blahagain","stuff yeablah"

但由于这是单行上的简单替换,因此它比 awk 更适合 sed:

$ sed -r 's/("[^"]+") /,/g' file
"stuff blah mostuff","stuff and blahagain","stuff yeablah"

$ sed -r 's/" "/","/g' file
"stuff blah mostuff","stuff and blahagain","stuff yeablah"

如果您的真实数据比您显示的更复杂(例如,可以嵌入转义引号或字符串之间的不同间距或嵌入换行符或仅包含空白字符的字符串或...)然后编辑您的问题显示一些真正有代表性的输入和预期输出。

一种不同的方法,

awk -F\" -v OFS=\" '{for (i=3; i<=NF-2; i+=2) $i=","}1' file