在我的代码中用[]替换.at()

时间:2011-07-29 20:04:03

标签: c++ perl sed awk

我是C ++用户,并获得了一些使用.at()来检查STL向量的代码。现在我想将它们更改为标准[]。有谁知道可以做到这一点的脚本?它不一定是超级通用脚本 - 大部分情况都是.at(i)或者.at(a*i+j) - 但是有太多可以手工完成。

3 个答案:

答案 0 :(得分:6)

使用此Perl运算符:

s/\.at\(([^)]+)\)/[$1]/g

Perl中的s///运算符是“替换”(查找/替换)。在第一组//中,指定要匹配的正则表达式。第二个//是替换或替换匹配的文本。

在这种情况下,我发现了任何“.at(任何东西,而不是近距离)”的实例,并将其替换为“[那些在那些 - 那些 - parens]”。

作为单行,

perl -pe's/\.at\(([^)]+)\)/[$1]/g' in.cpp > out.cpp

如果使用Visual Studio ,请在“查找/替换”提示中执行此操作:

查找内容:\.at\({[^)]+}\) 替换为:\[\1\]

启用正则表达式,你很高兴。

答案 1 :(得分:1)

sed -i 's,\.at(\([^\)]*\)),[\1],g' *.h *.cpp

应适用于大多数简单表达式。但是,如果在参数内使用括号at(),则无效。

grep 'at(.*).*)' *.h *.cpp

帮助您识别这些案例并在运行所述sed脚本之前将其转换为

P.S。如果你让sed像这里一样就地操作,请保持备用(例如通过VCS)。

编辑:应该在发布之前测试过该sed脚本。现在修复,并经过测试。

答案 2 :(得分:0)

sed -e 's/\.at(\([^)]*\))/\[\1]/g