簡體   English   中英

Perl Shell腳本轉義的替換模式不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM