perl的shell脚本逃脱替代模式不工作

问题描述 投票:-1回答:1

我有这个不工作的问题。

echo "aabbccdd" | perl -w -pe "s/(?<Naa>aa)/\g{Naa}-$1/;"

它输出

无法识别的逃逸\克穿过在-e线1。

我的perl版本是 “颠覆4(v5.18.4)”

我的bash的版本是 “版本4.2.53(1)-release下(x86_64-红帽Linux的GNU的)”

我的操作系统发行版是“发布的Fedora 20(Heisenbug)”

我的locale是“C”

怎么解决 ?

更新:

如何通过数字1,以显示相同的标记组?

regex bash perl
1个回答
2
投票

您只能在正则表达式的匹配端使用\g{name}(或\k<name>)。您可以在更换侧使用$+{name}

echo "aabbaaccdd" | perl -w -pe "s/(?<Naa>aa)(?=bb\g{Naa}).*/$+{Naa}/;"

打印出

aa

这是因为命名的捕获放置在哈希表%+

编辑:Wiktor的Stribiżew打我吧,我写这个的同时,在评论的问题。

© www.soinside.com 2019 - 2024. All rights reserved.