我从一个看起来像这样的系统获得输出:
AA;12,320,11;12,32
基本上,系统使用相同的分隔符为数字和小数位格式化数字。
所需的输出如下:
AA;12,320.11;12.32
答案 0 :(得分:1)
使用GNU awk for gensub():
$ cat file
AA;12,320,11;12,32
$ gawk 'BEGIN{FS=OFS=";"} {for (i=1;i<=NF;i++) $i=gensub(/,(..)$/,".\\1","",$i)}1' file
AA;12,320.11;12.32
答案 1 :(得分:1)
这可能适合你(GNU sed):
sed -r 's/,([0-9]+(;|$))/.\1/g' file
答案 2 :(得分:0)
使用Gnu awk版本4,你可以这样做:
awk -f a.awk file
其中a.awk
是
{
n=patsplit($0,a,/[^;]+/,s)
printf "%s%s%s",s[0],a[1],s[1]
for (i=2;i<=n; i++) {
m=patsplit(a[i],b,/[^,]+/,t)
t[m-1]="."
printf "%s",t[0]
for (j=1;j<=n;j++)
printf "%s%s",b[j],t[j]
printf "%s",s[i]
}
print ""
}