【发布时间】:2014-06-24 02:01:42
【问题描述】:
假设我的文件位于不同的子文件夹中,我想在这些文件中搜索、测试和替换某些内容。
我想分三步完成:
- 搜索特定模式(带或不带正则表达式)
- 测试用某些东西替换它(带或不带正则表达式)
- 仅将更改应用于相关文件
我目前的解决方案是在我的.bashrc 中定义一些别名,以便轻松使用grep 和sed:
alias findsrc='find . -name "*.[ch]" -or -name "*.asm" -or -name "*.inc"'
alias grepsrc='findsrc | xargs grep -n --color '
alias sedsrc='findsrc | xargs sed '
那我用
-
grepsrc <pattern>搜索我的模式 - (尚未找到解决方案)
sedsrc -i 's/<pattern>/replace/g'
不幸的是,这个解决方案不能让我满意。第一个问题是 sed 触摸所有文件,即使没有更改。然后,对我来说,使用别名的需要看起来不是很干净。
理想情况下,我希望有一个类似的工作流程:
注册一个新的上下文:
$ fetch register 'mysrcs' --recurse *.h *.c *.asm *.inc
上下文列表:
$ fetch context
1. mysrcs --recurse *.h *.c *.asm *.inc
Extracted from ~/.fetchrc
找东西:
$ fetch files mysrcs /0x[a-f0-9]{3}/
./foo.c:235 Yeah 0x245
./bar.h:2 Oh yeah 0x2ac hex
测试替换:
$ fetch test mysrcs /0x[a-f0-9]{3}/0xabc/
./foo.c:235 Yeah 0xabc
./bar.h:2 Oh yeah 0xabc hex
应用替换:
$ fetch subst --backup mysrcs /0x[a-f0-9]{3}/0xabc/
./foo.c:235 Yeah 0xabc
./bar.h:2 Oh yeah 0xabc hex
Backup number: 242
出错时恢复:
$ fetch restore 242
这种工具对我来说看起来很标准。每个人都需要搜索和替换。我可以使用 Linux 中的标准替代方案吗?
【问题讨论】:
标签: regex search replace sed grep