2011-02-08 34 views
5

我是awk的新手,我似乎无法弄清楚这一点。如何使用正则表达式在单个字段中替换?awk stumper:在一个字段中的正则表达式替换

在Perl中,我可以将感兴趣的字段分配给一个变量,然后$myvar =~ s/foo/bar/g。当然,在perl中我也必须做自己的现场管理,这在awk中更容易。

对于刚才的问题,这是欧洲货币记录,我想将逗号更改为金额字段中的句点。但是我只需要针对这个领域,所以我不会在逗号可以用作散文标点符号的其他领域发生冲突。

解决方案比我想像的更难吗?还是更简单?我是否必须更换记录分隔符或类似的东西?

谢谢你的帮助!

回答

6

子()接受第三个参数,它是该领域(或变量)来改变:

$ echo '02/08/2011 7,33 Shopping' | awk '{sub(/,/,".",$2)} 1' 
02/08/2011 7.33 Shopping 
+0

哇,我不知道如何错过了,在我的O'Reilly的。它是。一定是一夜之间。谢谢! – rockriver 2011-02-08 13:43:11