簡體   English   中英

Perl one liner用於在變量文件中查找和替換

[英]Perl one liner to find and replace in a file with a variable

我正在嘗試找到<li ><a href='xxxxxxxx'>some_link</a></li>並將其替換為<li ><a href='xxxxxxxx'>some_link</a></li> 要做到這一點,我正在運行下面的命令,但它正在識別$作為正則表達式的一部分。

perl -p -i -e 's/<li ><a href=.*$SOMEVAR.*li>\\n//g' file.html

我試過以下的事情,
${SOMEVAR}
\\$SOMEVAR
FIND="<li ><a href=.*$SOMEVAR.*li>"; perl -p -i -e 's/$FIND//g' file.html

有任何想法嗎? 謝謝。

Bash只用雙引號進行變量替換。

這應該工作:

perl -p -i -e "s/<li ><a href=.*?$SOMEVAR.*?li>\n//g" file.html

編輯實際上,這可能與\\n中的\\n有點奇怪。 另一種方法是利用Bash的字符串連接。 這應該工作:

perl -p -i -e 's/<li ><a href=.*?'$SOMEVAR'.*?li>\n//g' file.html

編輯2:我只是仔細看看你想要做什么,這有點危險。 你正在使用.*貪婪形式,它可以匹配比你想要的更多的文本。 使用.*? 代替。 我更新了上面的正則表達式。

如果“SOMEVAR”確實是一個外部變量,您可以將其導出到環境並引用它:

SOMEVAR=whatever perl -p -i -e 's/<li ><a href=.*$ENV{SOMEVAR}.*li>\n//g' file.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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