【问题标题】:Strawberry Perl regular expression, Windows 7 [duplicate]草莓 Perl 正则表达式,Windows 7 [重复]
【发布时间】:2026-02-07 20:15:02
【问题描述】:

我正在尝试在命令行执行简单的搜索和替换。

我有一个名为 Test1.txt 的文件。内容是“你今天过得怎么样?”

在命令行中,我已导航到文本文件所在的文件夹:C:\perl。

这是我发出的命令和我得到的结果/消息:

perl -pi.bak -e 's/doing/feeling/g' Test1.txt

这会创建备份,但不会对 Test1.txt 进行任何可观察到的更改,即使就 Windows 资源管理器而言该文件似乎已被修改。

perl -pi.bak -e "BEGIN{@ARGV=<Test1.txt>} s/doing/feeling/g"

这会进行更改并创建备份,但我收到消息:

-i 在命令行中使用,没有文件名,从 STDIN 读取

有没有办法在命令行上使用 -i 和文件名?我在其他地方找到了 BEGIN 语法作为在 Windows 中执行此操作的方法,但是没有收到此消息就没有其他方法了吗?

【问题讨论】:

    标签: regex perl


    【解决方案1】:

    我不知道为什么,但是使用双引号而不是单引号可以工作。

    perl -pi.bak -e "s/doing/feeling/g" Test1.txt
    

    【讨论】: