
&
次の XML 特殊文字を除いて、「&」を置き換えたいです。
" "
' '
< <
> >
& &
私は、2 つの文字列間の指定された文字を置き換えますか?そして特定の 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'