Comece com algo assim:
for zf in *.zip ; do
base=${zf/\.zip/}
echo "$zf"
unzip -p "$zf" "$base.SAFE/preview/map-overlay.kml" |
sed -ne '/<gx:/,/<\/gx:/p'
done
Isso canaliza o arquivo ... / map-overlay.kml de cada arquivo .zip para sed , que imprime apenas as linhas entre <gx: e </gx: .
Como alternativa, se você quiser apenas a linha <coordinates> , altere o script sed para:
sed -ne '/<coordinates>/p'
No entanto, observe que, embora esses scripts sed funcionem com seus dados de amostra, até mesmo uma extração simples de algumas linhas de um arquivo XML está sujeita a falhas se você usar expressões regulares para fazer a extração. Seria negligente da minha parte não dizer:
Não analise XML ou HTML com expressões regulares . Veja por que não funciona .
Usar xmlstarlet seria melhor. Um script perl ou python , usando uma de suas bibliotecas de análise de XML, seria ainda melhor. BTW, perl e python também têm módulos de biblioteca para trabalhar com arquivos .zip ... então todo o trabalho poderia ser feito em qualquer uma dessas linguagens.