Usando um perl one-liner:
perl -pe 's/&(?!(quot|apos|lt|gt|amp);)/&/g'
O -p flag faz o perl se comportar como o sed (fazer o loop sobre as linhas STDIN, fazer as coisas, imprimir no STDOUT), -e diz para ler o comando do argumento não arquivo.
A substituição de expressões regulares faz isso:
- corresponde a
&- não seguido por
-
quotouapos...amp - ponto e vírgula
- substitua por
& - para todos os jogos on-line.
Para usá-lo como sed, por exemplo,
perl -pe 's/&(?!(quot|apos|lt|gt|amp);)/&/g' < my-file.xml
./myscript.sh | perl -pe 's/&(?!(quot|apos|lt|gt|amp);)/&/g'