
我想將“&”替換為&
“除了以下出現的 XML 特殊字元”。
" "
' '
< <
> >
& &
我嘗試了中提到的方法替換兩個字串之間的指定字元?和在給定 XML 標記中使用 sed 取代所有“&”,但不將 XML 實體“&”中的“&”替換為“#”似乎不適合我。
答案1
使用 perl 一行:
perl -pe 's/&(?!(quot|apos|lt|gt|amp);)/&/g'
這個-p
標誌使 perl 的行為類似於 sed(循環 STDIN 行、執行操作、列印到 STDOUT),-e
告訴它從參數而不是檔案讀取命令。
正規表示式替換的作用是:
- 匹配
&
- 沒有跟隨
quot
或者apos
...amp
- 分號
- 用。
&
- 對於所有線上比賽。
像 sed 一樣使用它,例如
perl -pe 's/&(?!(quot|apos|lt|gt|amp);)/&/g' < my-file.xml
./myscript.sh | perl -pe 's/&(?!(quot|apos|lt|gt|amp);)/&/g'