gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 07:41:22 26 4
gpt4 key购买 nike

在一组大文件中,我需要将所有出现的“\”替换为“\\”。为此,我想使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com