我有大量的C ++代码库。使用underscore_identifiers和CamelCaseIdentifiers的地方非常不一致,但在文件组中是一致的。把它想象成一个较小的图书馆合并成一个更大的图书馆。
我想在此项目中将其标准化为Google C++ Style Guide。 我该如何进行半自动化?最好使用Linux工具。
答案 0 :(得分:1)
在源的根目录上尝试此命令。
find . -name "*.cpp" -exec sed 's/_\([a-zA-Z]\)\([a-zA-Z]*\)/\U\1\E\2/g' {} \;
输出转到STDOUT只是为了测试它。
如果您想直接更改文件,可以将-i
选项添加到sed
。
警告:这将更改文件。先备份!
find . -name "*.cpp" -exec sed -i 's/_\([a-zA-Z]\)\([a-zA-Z]*\)/\U\1\E\2/g' {} \;
当然,您必须检查所有自动更改。请参阅Jim Lewis的评论。
答案 1 :(得分:0)
一个简单的perl脚本就可以了。然后使用-i标志(“替换inplace”)为所有文件运行它。
答案 2 :(得分:0)
从下划线变为驼峰(使用gnu sed):
sed's /([a-zA-Z])_([a-zA-Z])/ \ 1 \ U \ 2 / g'
相反:
sed's /([a-z])([A-Z])/ \ 1_ \ L \ 2 / g'
如果您有勇气,可以使用-i标志就地工作。
[n.b。未经测试我在Mac上并且随附的sed不支持\ U或\ L - 在gnu Linux上你应该没问题]