【发布时间】:2010-09-11 06:03:51
【问题描述】:
如果可能,最好使用免费工具。
此外,搜索多个正则表达式并将每个替换为不同字符串的选项将是一个奖励。
【问题讨论】:
-
这应该迁移到 SoftwareRecs.SE
如果可能,最好使用免费工具。
此外,搜索多个正则表达式并将每个替换为不同字符串的选项将是一个奖励。
【问题讨论】:
Perl。
说真的,它使系统管理员的工作变得更加容易。这是一个例子:
perl -pi -e 's/something/somethingelse/g' *.log
【讨论】:
perl -pi -e 's/something/somethingelse/g'`egrep -ril "something" ./`
p:打印,对于每一行,i:内联编辑文件,e:执行命令行上给出的命令
rg 和xargs 做到这一点?
sed 快捷方便:
sed -e "s/pattern/result/" <file list>
你也可以加入find:
find <other find args> -exec sed -e "s/pattern/result/" "{}" ";"
【讨论】:
-i 参数似乎可以解决这个问题。另见stackoverflow.com/questions/10445934/change-multiple-files
我已经为 Windows 编写了一个免费的命令行工具来执行此操作。它叫rxrepl,它支持unicode和文件搜索。有些人可能会觉得它很有用。
【讨论】:
Textpad 在 Windows 上做得很好。它也是一个非常好的编辑器。
【讨论】:
不出所料,Perl 可以很好地处理这个问题,再加上一个体面的 shell:
for file in @filelist ; do
perl -p -i -e "s/pattern/result/g" $file
done
这与以下效果相同(但效率更高,并且没有竞争条件):
for file in @filelist ; do
cat $file | sed "s/pattern/result/" > /tmp/newfile
mv /tmp/newfile $file
done
【讨论】:
Emacs 的目录编辑器具有 `dired-do-query-replace-regexp' 功能来搜索和替换一组标记文件的正则表达式。
【讨论】:
对于 Windows 上的多个文件的查找和替换,我发现 rxFind 非常有用。
【讨论】:
对于 Mac OS X,TextWrangler 可以完成这项工作。
【讨论】:
我个人最喜欢的是 JGSoft 的PowerGrep。它与RegexBuddy 接口,可以帮助您创建和测试正则表达式,自动备份所有更改(并提供撤消功能),提供解析多个目录(带有文件名模式)的能力,甚至支持文件格式,例如Microsoft Word、Excel 和 PDF。
【讨论】:
在 Windows 中,有一个效果最好的免费替代品:Notepad++
转到“搜索”->“在文件中查找”。可以给出目录、文件模式、设置正则表达式,然后预览匹配项,最后递归替换所有文件。
【讨论】:
我喜欢这个工具:
在“键入时”为您提供正则表达式的预览...对于那些不熟悉 RE 的人来说太棒了...而且一次更改数百或数千个文件的速度非常快...
然后让您也撤消您的更改...
非常好...
帕特里克·斯泰尔 - http://www.podiotools.com
【讨论】:
我会选择 bash + find + sed。
【讨论】:
jEdit 在文件中的正则表达式搜索和替换相当不错。但是,如果您仅将其用于此目的,则有点矫枉过正。它也不支持您要求的多表达式替换。
【讨论】:
Vim 用于救援(和总统 ;-))。试试:
vim -c "argdo! s:foo:bar:gci" <list_of_files>
(我很喜欢 Vim 的 -c 开关,它很神奇。 或者如果你已经在 Vim 中,并打开了文件,例如:
vim <list_of_files>
刚刚发布:
:bufdo! s:foo:bar:gci
当然sed 和perl 也可以。
HTH。
【讨论】:
我拥有 Unix 和 Ubuntu 的奢侈;在这两种情况下,我都将 gawk 用于需要逐行搜索和替换的任何内容,尤其是对于子字符串的逐行搜索。 最近,这是处理数百个文件(一个目录)中数百万行的 1100 次更改的最快速度 在 Ubuntu 上,我是 regexxer 的粉丝
sudo apt-get install regexxer
【讨论】:
如果 'textpad' 是一个有效的答案,我会建议 Sublime Text 放下手。
一般来说,多光标编辑是一种更有效的替换方法,但它的“Find in Files”是批量正则表达式/普通查找替换的顶级方法。
【讨论】:
【讨论】:
我发现工具 RxFind 很有用(免费 OSS)。
【讨论】:
Brackets(源代码,deb/Ubuntu,OSx 和 Windows)具有良好的结果可视化,允许单独选择它们以应用替换。您可以按标准文本、区分大小写或不区分大小写以及正则表达式进行搜索。 非常重要:您可以在搜索中排除文件和目录的模式。
【讨论】:
至少 25 年来,我一直在使用 Emacs 对大量文件进行大规模替换。运行etags 指定要搜索的任何文件集:
$ etags file1.txt file2.md dir1/*.yml dir2/*.json dir3/*.md
然后打开 Emacs 并运行tags-query-replace,提示输入正则表达式和替换:
\b\(foo\)\b
\1bar
【讨论】: