在一组大文件中,我需要替换所有出现的“\
" with "\\
“。我想使用 Perl 来实现这个目的。现在,我有以下内容:
perl -spi.bak -e '/s/\\/\\\\/gm' inputFile
这个命令是建议对我来说,但这不会导致 inputFile 发生任何变化(除了更新的时间戳)。认为问题可能在于“\
“s 没有被空格包围,我尝试过
perl -spi.bak -e '/s/.\\./\\\\/gm' inputFile
同样,这对文件没有影响。最后,我想我可能缺少一个分号,所以我尝试:
perl -spi.bak -e '/s/.\\./\\\\/gm;' inputFile
这也没有效果。我知道我的文件包含“\
"s,例如下面一行:
("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 ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)