2012-05-04 73 views
2

我正在执行一些项目的重构,并且我想自动替换很多(大部分)一次性使用的局部常量。使用IDE,我可以搜索替换,但它需要大量的点击,并且有很多变量很多的文件(全部在和仅在某个文件夹下,所以我可以将它应用于文件夹中的每个文件)。以下半生不熟的正则表达式做所需的更换:源代码变量搜索替换(bash?)

Search string: (constant variable string)([a-zA-Z_]+)(=)("[A-Za-z\.]+")(;.*)(\2)(?![a-zA-Z_]) 
Replacement: $1$2$3$4$5$4 

这是丑陋和不实际,那只能说明所期望的行为:寻找报关,并替换其值的变量的下一次出现。我需要为每个常量不止一次应用这个函数,因为有些函数不是一次性使用的。最后,我需要另一个搜索来删除声明本身。

我使用Ubuntu,所以我猜bash会是一个很好的工具,但我是一个Linux新手,我找不到这种类型的任务的脚本。我也可以用语言编码,但肯定会花费更长的时间。

任何人都可以告诉我如何做到这一点? 我可以适应这种情况的一些例子也很棒。


编辑:用PHP脚本完成困难的方法。

+0

这是什么语言和IDE?大多数好的IDE都有内置的重构支持。 –

+0

@Zac Thompson - Eclipse。这是'内联'重构,但不能应用于多个变量。 – user1183250

+2

我会马上告诉你,这不能用正则表达式来完成。 – Kevin

回答

1

sed的是你的朋友

sed -i -e 's/original/replacement/g' files 

其中的文件可以是glob模式,如* .C等

,如果你需要更多的力量和遇到特殊字符的问题,你可能想看看进入perl,因为后者有更多的工具可以完成这样的事情。

+0

谢谢,但这个简单的替换命令是不够的,我的情况。我需要找到变量名称并在文件中进一步替换它们。 – user1183250