Se você quiser apenas substituir <author type=''><\/author>
por <author type='Local'><\/author>
, poderá usar o comando sed
:
sed "/<fiction type='a'>/,/<\/fiction>/ s/<author type=''><\/author>/<author type='Local'><\/author>/g;" file
Mas, ao lidar com xml, recomendo um analisador / editor xml como xmlstarlet :
$ xmlstarlet ed -u /book/*/author[@type]/@type -v "Local" file
<?xml version="1.0"?>
<book>
<fiction>
<author type="Local"/>
</fiction>
<Romance>
<author type="Local"/>
</Romance>
</book>
Use o sinal -L
para editar o arquivo inline, em vez de imprimir as alterações.