我正在尝试用 awk 替换字段中最后一次出现的字符。给定的是一个这样的文件:
John,Doe,Abc fgh 123,Abc
John,Doe,Ijk-nop 45D,Def
John,Doe,Qr s Uvw 6,Ghi
Run Code Online (Sandbox Code Playgroud)
我想用逗号“,”替换最后一个空格“”,基本上将字段一分为二。结果应该是这样的:
John,Doe,Abc fgh,123,Abc
John,Doe,Ijk-nop,45D,Def
John,Doe,Qr s Uvw,6,Ghi
Run Code Online (Sandbox Code Playgroud)
我试图创建一个变量,其中包含字段中空格出现的次数
{var1=gsub(/ /,"",$3)}
Run Code Online (Sandbox Code Playgroud)
然后将其集成到
{var2=gensub(/ /,",",var1,$4); print var2}
Run Code Online (Sandbox Code Playgroud)
但是 gensub 中的 how-argument 不允许除数字和 G/g 之外的任何字符。
我在这里找到了一个类似的线程,但无法根据我的问题调整解决方案。
我对此很陌生,所以任何帮助将不胜感激!
使用 GNU awk 执行 gensub():
$ awk 'BEGIN{FS=OFS=","} {$3=gensub(/(.*) /,"\\1,","",$3)}1' file
John,Doe,Abc fgh,123,Abc
John,Doe,Ijk-nop,45D,Def
John,Doe,Qr s Uvw,6,Ghi
Run Code Online (Sandbox Code Playgroud)
获取 Arnold Robbins 所著的《Effective Awk 编程》一书。
顺便说一句,问题写得很好!