全部替换 <与 <在 cygwin 上使用 Perl
我安装了 Cygwin,我想在命令提示符下执行类似的操作:
perl -pne 's/</<' input > output
但是我遇到了两个不同的问题,分别是 &
和 <
被逃脱。
- 像
's/&/&'
这样的东西是 perl 级别的错误- “替换模式未在 -e 第 1 行终止”
- 类似
's/ 是 shell 级别的错误
- “系统找不到指定的文件。”
我需要做什么来解决这个问题?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您缺少结尾斜杠:
由于 &和<被单引号括起来,它们不会被 shell 解释。You are missing the ending slash:
Since the & and the < are quoted between single quotes, they are not interpreted by the shell.说真的,如果您安装了 CygWin,您应该从
bash
执行所有操作,而不是cmd.exe
。在处理和转义命令行参数方面,它具有更多的功能。话虽如此,您可以尝试使用
^
转义字符。这是cmd.exe
的标准配置,它至少可以让您摆脱<
的问题:我还没有尝试过这个,因为我不这样做我的本地 Windows VM 上安装了 Perl。我的笔记本电脑上确实安装了 CygWin,但正如我所说,我倾向于使用 bash 而不是 cmd.exe。所以对这个答案只关心并且不承担任何责任:-)
Seriously, if you have CygWin installed, you should be doing everything from
bash
, notcmd.exe
. It has much more capability when it comes to processing and escaping command line arguments.Having said that, you may try to use the
^
escape character. That's the standard one forcmd.exe
and it may allow you to at least get rid of the problem with<
:I haven't tried this since I don't have Perl installed on my local Windows VM. I do have CygWin on the laptop but, as I said, I tend to use
bash
there instead ofcmd.exe
. So all care and no responsibility on this answer :-)