从命令行替换正则表达式

Azi*_*ziz 24 windows regex command-line find-and-replace

是否可以从命令行替换正则表达式?现在我正在使用记事本++来做到这一点。在命令行中,我只能使用 FINDSTR 至极只能定位已加工的文件/行

编辑:
也许可以制作 VB 脚本并从 cmd 运行它?我刚刚创建了一个包含内容的文件“hi.vbs”

Msgbox "Hi Buddy"
Run Code Online (Sandbox Code Playgroud)

然后 cmd 允许我通过从命令行输入“hi”来直接运行它。
因此,如果批处理脚本无法实现,那么我可以通过批处理使用 VB 脚本。或者..?

小智 27

我已经为 Windows 编写了一个免费的命令行工具来执行此操作。它叫做rxrepl,它支持 Unicode 和文件搜索。有些人可能会发现它是一个有用的工具。

rxrepl 是一个 Microsoft Windows 命令行工具,用于使用 Perl 兼容正则表达式 (PCRE) 搜索和替换文本文件中的文本。

它具有以下特点:

  • 使用 Perl 兼容的正则表达式进行搜索
  • 在替换文本中使用组匹配
  • 支持 Windows 和 Unix 行尾
  • Unicode 支持
  • 接受多个搜索/替换参数
  • 选项可以在选项文件中提供
  • 扫描文件
  • 预览模式
  • 行和全文件匹配模式

在此处输入图片说明

  • 这真太了不起了!如果您像我一样需要示例,则将文件中的“foobar”替换为“foofighters”: rxrepl.exe -f file.txt -a -s "(foo)bar" -r "\1fighters" (4认同)
  • 很棒的工具,希望你还在维护它 (2认同)

Ian*_*ley 14

脚本专家介绍了如何在 PowerShell 中执行此操作(在最新的 Windows 操作系统上无需额外下载,您可能已经安装了它)。

启动它,运行以下命令(*用 a替换a @):

(Get-Content C:\Scripts\Test.txt) | 
Foreach-Object {$_ -replace "\*", "@"} | 
Set-Content C:\Scripts\Test.txt
Run Code Online (Sandbox Code Playgroud)

这支持.NET 正则表达式,包括正面和负面的前瞻,以及 Notepad++ 在 6.x 版之前不支持正则表达式的所有方式(就像我喜欢 notepad++)。

  • Notepad++ 从版本 6 开始支持完整的 PCRE。 (2认同)

bar*_*lop 12

转到这里
http://gnuwin32.sourceforge.net/packages.html
向下滚动到 SED。在使用时也下载 coreutils。

此命令将全局替换 a 和 b,并在每一行上。所以不仅仅是第一次出现。

例如使用 sed "s/a/b/g" a.txt

C:\>type a.txt
aaaa
aaa

C:\>sed "s/a/b/" a.txt
baaa
baa

C:\>sed "s/a/b/g" a.txt
bbbb
bbb

C:\>
Run Code Online (Sandbox Code Playgroud)

VBScript 确实支持正则表达式,你可以用它来查找和替换。

dim re, s
set re = new RegExp

re.Pattern="in"
re.Global=True 'false is default
s="bin din in"
MsgBox re.Replace(s,"xxx")
Run Code Online (Sandbox Code Playgroud)

显示 bxxx dxxx xxx


小智 5

为此找到了fnr.exe。它有 GUI 和命令行。

一个开源工具,用于在多个文件中查找和替换文本。

特征

  • 单个文件下载 - fnr.exe (127kb)
  • 使用 Windows 应用程序或通过命令行替换多个文件中的文本
  • 仅查找以查看匹配项的位置
  • 区分大小写的搜索
  • 在一个目录或递归子目录中搜索文件
  • 常用表达
  • 查找和替换多行文本
  • 生成命令行按钮以创建命令行文本以放入批处理文件
  • 命令行帮助
  • Find/Replace 引擎的单元测试

查看命令行选项

在此处输入图片说明


归档时间:

查看次数:

77989 次

最近记录:

8 年,8 月 前