[英]perl shell script escaped replace pattern not working
我有這個行不通的問題。
echo "aabbccdd" | perl -w -pe "s/(?<Naa>aa)/\g{Naa}-$1/;"
它輸出
無法識別的轉義\\ g通過-e行1。
我的perl版本是“ subversion 4(v5.18.4)”
我的bash版本是“版本4.2.53(1)-發行版(x86_64-redhat-linux-gnu)”
我的操作系統發行版是“ Fedora版本20(Heisenbug)”
我的語言環境是“ C”
怎么解決 ?
更新:
如何顯示編號為1的相同標簽組?
您只能在正則表達式的匹配側使用\\g{name}
(或\\k<name>
)。 您可以在替換端使用$+{name}
:
echo "aabbaaccdd" | perl -w -pe "s/(?<Naa>aa)(?=bb\g{Naa}).*/$+{Naa}/;"
打印出來
aa
這是因為命名捕獲放置在哈希表%+
。
編輯:WiktorStribiżew在寫這篇文章時在問題的評論中擊敗了我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.