Regex awk脚本中的语法错误

Regex awk脚本中的语法错误,regex,bash,awk,Regex,Bash,Awk,运行awk脚本时出现语法错误,脚本为: awk -F\" 'for( i = 1 ; i <= NF; i++){if ($i == "^[0-9]+$"){ gsub(.,,,$1) }}' 正如您从代码中看到的,我想做的是:读取所有字段,如果字段是数字(将始终是十进制),则用逗号替换点。 我还尝试在gsub函数中转义逗号: awk -F\" 'for( i = 1 ; i <= NF; i++){if ($i == "^[0-9]+$"){ gsub(.,\,,$1) }}'

运行awk脚本时出现语法错误,脚本为:

awk -F\" 'for( i = 1 ; i <= NF; i++){if ($i == "^[0-9]+$"){ gsub(.,,,$1) }}'
正如您从代码中看到的,我想做的是:读取所有字段,如果字段是数字(将始终是十进制),则用逗号替换点。 我还尝试在gsub函数中转义逗号:

awk -F\" 'for( i = 1 ; i <= NF; i++){if ($i == "^[0-9]+$"){ gsub(.,\,,$1) }}'

(i=1;i此行可能适用于您:

awk  'BEGIN{FS=OFS="\""}{for(i=1;i<=NF;i++)if($i~/[0-9\.]*/)gsub("\\.",",",$i)}1' file

awk'BEGIN{FS=OFS=“\”}{for(i=1;i这一行可能适合您:

awk  'BEGIN{FS=OFS="\""}{for(i=1;i<=NF;i++)if($i~/[0-9\.]*/)gsub("\\.",",",$i)}1' file

awk'BEGIN{FS=OFS=“\”}{for(i=1;i您在for之前缺少一个大括号。
你可以这样试试

awk -F\" '{for(i=1;i<=NF;i++){if($i=="^[0-9]+$"){gsub(".",",",$1); }}}'

awk-F\“{for(i=1;i在for之前,您缺少一个大括号。
你可以这样试试

awk -F\" '{for(i=1;i<=NF;i++){if($i=="^[0-9]+$"){gsub(".",",",$1); }}}'

awk-F\”{对于(i=1;iHi-Kent,thx)代码片段和清晰有用的提示,regexp有一些问题,它的匹配也有字符串,试试这个,它会将(data.data)格式化为(data,data):echo'1000.18“|”4.8“|”data.data“|”data“|”3.5“| awk”BEGIN{FS=OFS=“\”}{for(i=1;iif($i~/[0-9]*/)这解决了问题,thx很多Kent!@JBoy yup,我的正则表达式不够严格。很高兴能提供帮助。嗨Kent,thx对于代码片段和清晰有用的提示,尽管正则表达式有一些问题,它的匹配也有字符串,试试这个,它会将(data.data)格式化为(data,data):echo's“1000.18”|“4.8”|“data.data”|“data”|“3.5”| awk'BEGIN{FS=OFS=“\”}{for(i=1;iif($i~/[0-9].[0-9]*/)这就解决了问题,太多了Kent!@JBoy是的,我的正则表达式不够严格。不过很高兴能帮上忙。
awk -F\" '{for(i=1;i<=NF;i++){if($i=="^[0-9]+$"){gsub(".",",",$1); }}}'