2

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

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 脚本。

4

1 回答 1

1

sed 是你的朋友

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

其中文件可以是 glob 模式,例如 *.c 等。

如果您需要更多功能并遇到特殊字符问题,您可能还想研究一下 perl,因为后者有更多的工具来做这样的事情。

于 2012-05-04T17:37:48.753 回答