我有这个不工作的问题。
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,以显示相同的标记组?
您只能在正则表达式的匹配端使用\g{name}
(或\k<name>
)。您可以在更换侧使用$+{name}
:
echo "aabbaaccdd" | perl -w -pe "s/(?<Naa>aa)(?=bb\g{Naa}).*/$+{Naa}/;"
打印出
aa
这是因为命名的捕获放置在哈希表%+
。
编辑:Wiktor的Stribiżew打我吧,我写这个的同时,在评论的问题。