全部替换 &#60;与 <在 cygwin 上使用 Perl

发布于 2024-09-06 02:06:44 字数 423 浏览 3 评论 0 原文

我安装了 Cygwin,我想在命令提示符下执行类似的操作:

perl -pne 's/&#60;/<' input > output

但是我遇到了两个不同的问题,分别是 &<被逃脱。

  • 's/&/&' 这样的东西是 perl 级别的错误
    • 替换模式未在 -e 第 1 行终止
  • 类似 's/ 是 shell 级别的错误
    • 系统找不到指定的文件。

我需要做什么来解决这个问题?

I have Cygwin installed, I want to execute something like this on the command prompt:

perl -pne 's/</<' input > output

But I'm running into two separate issues with the & and < each needing to be escaped.

  • something like 's/&/&' is an error at the perl level
    • "Substitution pattern not terminated at -e line 1"
  • something like 's/</<' is an error at the shell level
    • "The system cannot find the file specified."

What do I have to do to fix this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

原谅过去的我 2024-09-13 02:06:44

您缺少结尾斜杠:

perl -pne 's/</</' input > output

由于 &和<被单引号括起来,它们不会被 shell 解释。

You are missing the ending slash:

perl -pne 's/</</' input > output

Since the & and the < are quoted between single quotes, they are not interpreted by the shell.

别在捏我脸啦 2024-09-13 02:06:44

说真的,如果您安装了 CygWin,您应该从 bash 执行所有操作,而不是 cmd.exe。在处理和转义命令行参数方面,它具有更多的功能。

话虽如此,您可以尝试使用 ^ 转义字符。这是 cmd.exe 的标准配置,它至少可以让您摆脱 < 的问题:

Pax> echo <
The syntax of the command is incorrect.
Pax> echo ^<
<

我还没有尝试过这个,因为我不这样做我的本地 Windows VM 上安装了 Perl。我的笔记本电脑上确实安装了 CygWin,但正如我所说,我倾向于使用 bash 而不是 cmd.exe。所以对这个答案只关心并且不承担任何责任:-)

Pax> echo s/</<
The syntax of the command is incorrect.

Pax> echo s/^</^<
s/</</

Seriously, if you have CygWin installed, you should be doing everything from bash, not cmd.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 for cmd.exe and it may allow you to at least get rid of the problem with <:

Pax> echo <
The syntax of the command is incorrect.
Pax> echo ^<
<

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 of cmd.exe. So all care and no responsibility on this answer :-)

Pax> echo s/</<
The syntax of the command is incorrect.

Pax> echo s/^</^<
s/</</
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文