Eu tenho um arquivo .xml e estou tentando fazer uma "instalação de grupo" em uma máquina RHEL6, pois existem várias centenas de bibliotecas nesse arquivo .xml ... (perto de 16 000 linhas).
Portanto, estou tentando extrair os nomes de grupos contidos no arquivo .xml que possui essa estrutura:
<b>
<group>
<id> group name </id>
<packages>
...
</packages>
<id> group name 2 </id>
<packages>
...
</packages>
<id> etc... </id>
</group>
</b>
Basicamente, é isso que eu tentei:
sed -n '/<id>/,/<\/id>/p' test1.txt > test2.txt
Copiei o arquivo .xml para test1.txt. Estou tentando extrair os nomes de grupos do test1.txt para um segundo arquivo chamado test2.txt. No entanto, com a linha acima, ele está extraindo tudo, desde a PRIMEIRA <id>
tag até a última </id>
tag no meu arquivo. Como posso alterar meu código para extraí-lo várias vezes?
Minha segunda pergunta seria: o plugin -downloadonly também funciona com grupos para yum?
Respostas:
Parece que o que você precisa é mais algo do tipo
(assumindo como na sua amostra que
<id>
e</id>
estão na mesma linha e que há apenas um<id>...</id>
por linha).Ou use uma ferramenta compatível com XML:
fonte
Por favor, tente com
fonte
Isso funcionará com qualquer tag, é claro, também com
<a href="...">...</a>
âncoras. Nenhum GNUisms usado - o suporte básico a regexsed
será suficiente.No entanto : observe que as tags de abertura e fechamento devem estar na mesma linha; caso contrário, a declaração precisará ser reescrita novamente.
fonte
Este é XML, você deve usar um analisador XML. Aqui está uma solução usando o XMLStarlet :
A expressão XPath
//group/id
selecionará qualquerid
nó abaixo de umgroup
nó. Os-t -v
meios "use o seguinte modelo para extrair valores". O-nl
final garantirá que a saída seja finalizada com uma nova linha.O exemplo acima usa um arquivo XML que é idêntico ao seu, mas com qualquer linha que contenha
...
removida.fonte
Eu li este post procurando resolver o problema de extrair o Reqd. Pacotes do DVD RHEL 7.3
repos.xml
, que eu acho que é exatamente o que o autor acima estava tentando fazer. Então, espero que este script possa ajudar outra pessoa ... Eu o usei muitas vezes agora.Então, eu precisava instalar o grupo "GNOME DESKTOP" no meu servidor RHEL7 "Instalação Mínima" que não tinha X / GUI configurado.
Hmmmmm… nenhuma lista de grupos no DVD para yum (sim, eu tentei todas as correções usuais do "google" e nunca funcionou), então recorri à fonte da lista do xml.
Supondo que você tenha executado
createrepo /your/local_rpms/dir
.fonte