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