在一组大文件中,我需要\用" \\" 替换所有出现的" ".我想将Perl用于此目的.现在,我有以下内容:
perl -spi.bak -e '/s/\\/\\\\/gm' inputFile
Run Code Online (Sandbox Code Playgroud)
我向你建议了这个命令,但是它导致inputFile没有变化(更新的时间戳除外).考虑到问题可能是\"s"没有被空白包围,我试过了
perl -spi.bak -e '/s/.\\./\\\\/gm' inputFile
Run Code Online (Sandbox Code Playgroud)
同样,这对文件没有影响.最后,我以为我可能会丢失一个分号,所以我尝试了:
perl -spi.bak -e '/s/.\\./\\\\/gm;' inputFile
Run Code Online (Sandbox Code Playgroud)
这也没有效果.我知道我的文件包含" \",例如在以下行中:
("C:\WINDOWS\system32\iac25_32.ax","Indeo audio)
Run Code Online (Sandbox Code Playgroud)
我不确定正则表达式是否存在问题,或者我调用Perl的方式是否有问题.我对正则表达式有基本的了解,但对于Perl来说,我是一个绝对的初学者.
这里有什么明显的错误吗?我注意到的一件事是命令返回得很快,尽管inputFile的大小约为10MB.
在命令行中处理反斜杠的困难部分是知道有多少进程要操作命令行 - 以及它们的引用规则是什么.
在Unix上,在任何shell下,您显示的第一个命令行都可以工作.
你似乎在Windows上,在那里,你有DOS命令'shell'来处理.
我会将替换放入一个文件并将其传递给Perl:
#!/bin/perl -spi.bak
s/\\/\\\\/g;
Run Code Online (Sandbox Code Playgroud)
这应该做的 - 保存为'subber.pl',然后运行:
perl subber.pl file1 ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14937 次 |
| 最近记录: |