30

如果可能的话,最好是免费的工具。

此外,搜索多个正则表达式并将每个替换为不同字符串的选项将是一个奖励。

4

21 回答 21

44

珀尔。

说真的,它使系统管理员的工作变得更加容易。这是一个例子:

perl -pi -e 's/something/somethingelse/g' *.log
于 2008-09-19T14:13:46.190 回答
25

sed快速简单:

sed -e "s/pattern/result/" <file list>

你也可以加入它find

find <other find args> -exec sed -e "s/pattern/result/" "{}" ";"
于 2008-09-19T15:19:53.490 回答
7

我已经为 Windows 编写了一个免费的命令行工具来执行此操作。它被称为rxrepl,它支持 unicode 和文件搜索。有些人可能会觉得它很有用。

于 2013-01-23T19:50:29.703 回答
6

Textpad在 Windows 上做得很好。它也是一个非常好的编辑器。

于 2008-09-19T14:11:47.927 回答
5

不出所料,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
于 2008-09-19T14:16:02.003 回答
5

Emacs 的目录编辑器具有 `dired-do-query-replace-regexp' 功能来搜索和替换一组标记文件的正则表达式。

于 2008-09-19T14:17:25.837 回答
4

Windows下,以前喜欢WinGrep

在 Ubuntu 下,我使用 Regexxer。

于 2008-09-19T14:10:40.270 回答
3

对于 Windows 上的多个文件的查找和替换,我发现rxFind非常有用。

于 2008-10-14T18:09:53.023 回答
2

对于 Mac OS X,TextWrangler 可以完成这项工作。

于 2008-09-19T14:12:18.207 回答
2

我个人最喜欢的是JGSoft的 PowerGrep。它与RegexBuddy接口,可以帮助您创建和测试正则表达式,自动备份所有更改(并提供撤消功能),提供解析多个目录(带有文件名模式)的能力,甚至支持 Microsoft Word 等文件格式、Excel 和 PDF。

PowerGrep 截图

于 2009-06-07T21:19:37.350 回答
2

在 Windows 中,有一个效果最好的免费替代方案:Notepad++

转到“搜索”->“在文件中查找”。可以给出目录、文件模式、设置正则表达式,然后预览匹配项,最后递归替换所有文件。

于 2012-03-22T18:27:02.100 回答
2

我喜欢这个工具:

http://www.abareplace.com/

为您提供正则表达式的“键入时”预览......对于那些不熟悉 RE 的人来说太棒了......并且一次更改数百或数千个文件的速度非常快......

然后让您也撤消您的更改...

非常好...

帕特里克·斯蒂尔 - http://www.podiotools.com

于 2013-01-28T15:26:06.053 回答
1

我会选择 bash + find + sed。

于 2008-09-19T14:11:38.240 回答
1

jEdit在文件中的正则表达式搜索和替换相当不错。但是,如果您仅将其用于此目的,则有点矫枉过正。它也不支持您要求的多表达式替换。

于 2008-09-19T14:12:39.657 回答
1

Vim 用于救援(和总统 ;-))。尝试:

vim -c "argdo! s:foo:bar:gci" <list_of_files>

(我很喜欢 Vim 的 -c 开关,它很神奇。或者如果你已经在 Vim 中,并打开了文件,例如:

vim <list_of_files>

只需发出:

:bufdo! s:foo:bar:gci

当然sedperl也有能力。HTH。

于 2008-09-19T14:26:27.063 回答
1

我拥有 Unix 和 Ubuntu 的奢侈;在这两种情况下,我都将gawk用于需要逐行搜索和替换的任何内容,尤其是对于子字符串的逐行搜索。最近,这是针对数百个文件(一个目录)中的数百万行处理 1100 次更改的最快方法在 Ubuntu 上,我是 regexxer 的粉丝

 sudo apt-get install regexxer
于 2009-06-12T21:13:39.207 回答
1

如果 'textpad' 是一个有效的答案,我会建议Sublime Text放下手。

一般来说,多光标编辑是一种更有效的替换方式,但它的“在文件中查找”是批量正则表达式/普通查找替换的顶级。

于 2015-07-10T20:17:02.587 回答
1

如果您是程序员:很多 IDE 也应该做得很好。

对我来说,PyCharm工作得很好:

  • 编辑>查找>替换路径Strg + Shift + R
  • 检查顶部的正则表达式

它有一个实时预览。

于 2020-05-20T16:24:29.777 回答
0

我发现RxFind工具很有用(免费 OSS)。

于 2009-06-07T21:12:30.283 回答
0

括号(源代码、deb/Ubuntu、OSx 和 Windows)具有良好的结果可视化效果,允许单独选择它们以应用替换。您可以按标准文本、区分大小写或不区分大小写以及正则表达式进行搜索。非常重要:您可以在搜索中排除文件和目录的模式。

于 2016-04-10T14:32:01.770 回答
0

至少 25 年来,我一直在使用 Emacs 对大量文件进行大规模替换。运行etags以指定要搜索的任何文件集:

$ etags file1.txt file2.md dir1/*.yml dir2/*.json dir3/*.md

然后打开 Emacs 并运行tags-query-replace,提示输入正则表达式和替换:

\b\(foo\)\b
\1bar
于 2018-10-03T19:35:17.200 回答