Windows 10上的Perl中的多行正则表达式问题。

时间:2017-06-02 20:59:00

标签: regex perl

我试图在文件中转换此模式

Insert 18333fig0101.png
Figure 1-1. Local version control diagram.

![Figure 1-1. Local version control diagram.](../figures/18333fig0101-tn.png)

这是perl命令:

perl -i -0pe 's/^Insert\s*(.*)\.png\s*\n([^\n]*)$/!\[\2](..\/figures\/\1-tn.png)/mg' */*.markdown

这在Mac OS X上运行良好,但它在Windows 10上不起作用。 我使用pacman -S perl中的MSYS2安装了perl。

这也不是\r\n问题,因为我检查了文档中没有\r

这是Windows上的已知问题吗?或者,Windows需要哪些不同的选项?

1 个答案:

答案 0 :(得分:1)

当我运行相同的命令(将单引号更改为双引号后)时,收到以下错误消息:

  

无法在没有备份的情况下进行就地编辑。

perldiag中记录了这一点:

  

如果你尝试,你在MS-DOS等系统上会感到困惑   从已删除(但仍然打开)的文件中读取。你必须说-i.bak或其他一些。

当我将命令更改为perl -i.bak ...时,它可以正常工作。