
&
Ich möchte ein „&“ durch „Außer bei den folgenden XML-Sonderzeichen“ ersetzen .
" "
' '
< <
> >
& &
Ich habe die Methode ausprobiert, die inAngegebenes Zeichen zwischen zwei Zeichenfolgen ersetzen?UndErsetzen aller `&`, aber nicht des in der XML-Entität `&` durch `#` mit sed in einem bestimmten XML-Tagscheint bei mir nicht zu funktionieren.
Antwort1
Verwenden eines Perl-Einzeilers:
perl -pe 's/&(?!(quot|apos|lt|gt|amp);)/&/g'
Das -p
Flag bewirkt, dass sich Perl wie sed verhält (über STDIN-Zeilen schleifen, Dinge tun, auf STDOUT drucken) und -e
weist es an, den Befehl vom Argument und nicht von der Datei zu lesen.
Die Ersetzung regulärer Ausdrücke bewirkt Folgendes:
- übereinstimmen
&
- nicht gefolgt von
quot
oderapos
...amp
- Semikolon
- ersetzen mit
&
- für alle Spiele online.
Um es wie sed zu verwenden, zB
perl -pe 's/&(?!(quot|apos|lt|gt|amp);)/&/g' < my-file.xml
./myscript.sh | perl -pe 's/&(?!(quot|apos|lt|gt|amp);)/&/g'