regex - Perl 正则表达式 : replace all backslashes with double-backslashes

标签 regex perl

在一组大文件中,我需要将所有出现的“\”替换为“\\”。为此,我想使用 Perl。现在,我有以下内容:

perl -spi.bak -e '/s/\\/\\\\/gm' inputFile

这个命令是 suggested对我来说,但它不会导致 inputFile 发生任何变化(除了更新的时间戳)。认为问题可能是“\”没有被空格包围,我尝试了

perl -spi.bak -e '/s/.\\./\\\\/gm' inputFile

同样,这对文件没有影响。最后,我想我可能少了一个分号,所以我试了一下:

perl -spi.bak -e '/s/.\\./\\\\/gm;' inputFile

这也没有效果。我知道我的文件包含“\”,例如以下行:

("C:\WINDOWS\system32\iac25_32.ax","Indeo audio)

我不确定正则表达式是否有问题,或者我调用 Perl 的方式是否有问题。我对正则表达式有基本的了解,但在 Perl 方面我绝对是个初学者。

这里有什么明显的错误吗?我注意到的一件事是尽管 inputFile 的大小约为 10MB,但该命令返回得非常快。

最佳答案

在命令行中处理反​​斜杠的困难部分是了解有多少进程将要操作命令行 - 以及它们的引用规则是什么。

在 Unix 上,在任何 shell 下,您显示的第一个命令行都可以使用。

您似乎在 Windows 上,并且有 DOS 命令“shell”要处理。

我会将替换放入一个文件并将其传递给 Perl:

#!/bin/perl -spi.bak
s/\\/\\\\/g;

这应该可以解决问题 - 另存为“subber.pl”然后运行:

perl subber.pl file1 ...

关于regex - Perl 正则表达式 : replace all backslashes with double-backslashes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/972490/

相关文章:

c# - .NET 正则表达式 - 查找、替换

regex - 在 perl 正则表达式中获取并运行 shell 函数

perl - 如何使用 DEBUG_LEAKING_SCALARS 编译 perl?

c# - 使用 C# 抓取网页 (html)

java - 使用正则表达式在java中生成密码

perl - 如何在最新的 perl 上安装额外的 perl 模块(事件状态)

perl - 在 Perl 的 AnyEvent 下使用哪个日志记录模块?

perl - 有哪些单行语句可以将第 n 列的唯一元素输出到另一个文件?

JavaScript Unicode Regex - 字符类中的范围乱序

php - 正则表达式出错