Ich habe eine .xml-Datei und versuche, eine "Gruppeninstallation" auf einem RHEL6-Computer durchzuführen, da diese .xml-Datei mehrere hundert Bibliotheken enthält ... (fast 16.000 Zeilen).
Ich versuche daher, die Gruppennamen zu extrahieren, die in der XML-Datei enthalten sind, die diese Struktur aufweist:
<b>
<group>
<id> group name </id>
<packages>
...
</packages>
<id> group name 2 </id>
<packages>
...
</packages>
<id> etc... </id>
</group>
</b>
Grundsätzlich habe ich Folgendes versucht:
sed -n '/<id>/,/<\/id>/p' test1.txt > test2.txt
Ich habe die XML-Datei in die Datei test1.txt kopiert. Ich versuche, die Gruppennamen aus der Datei test1.txt in eine zweite Datei mit dem Namen test2.txt zu extrahieren. Mit der obigen Zeile wird jedoch alles vom ERSTEN <id>
Tag bis zum letzten </id>
Tag in meiner Datei extrahiert . Wie kann ich meinen Code ändern, um ihn mehrmals zu extrahieren?
Meine zweite Frage wäre: Funktioniert das -downloadonly-Plugin auch mit Gruppen für yum?
Antworten:
Klingt so, als ob Sie eher etwas im Sinne von brauchen
(Angenommen, wie in Ihrem Beispiel, dass sich die
<id>
und</id>
in derselben Zeile befinden und es nur eine<id>...</id>
pro Zeile gibt).Oder verwenden Sie ein XML-fähiges Tool:
quelle
Bitte versuchen Sie es mit
quelle
Dies funktioniert mit jedem Tag, natürlich auch mit
<a href="...">...</a>
Ankern. Keine GNUisms verwendet - grundlegende Regex-Unterstützungsed
wird ausreichen.Allerdings : Bitte beachten Sie , dass sowohl das Öffnen und Schließen - Tags müssen in der gleichen Zeile sein, da sonst die Aussage wieder werden müßte neu geschrieben.
quelle
Dies ist XML. Sie sollten einen XML-Parser verwenden. Hier ist eine Lösung mit XMLStarlet :
Der XPath-Ausdruck
//group/id
wählt einen beliebigenid
Knoten unter einemgroup
Knoten aus. Das-t -v
bedeutet "Verwenden Sie die folgende Vorlage, um Werte zu extrahieren". Das-nl
am Ende sorgt dafür, dass die Ausgabe mit einem Zeilenumbruch beendet wird.Im obigen Beispiel wird eine XML-Datei verwendet, die mit Ihrer identisch ist, die jedoch keine Zeile enthält
...
.quelle
Ich habe diesen Beitrag gelesen, um das Problem des Extrahierens von Reqd zu lösen. Pakete von der RHEL 7.3 DVD
repos.xml
, die genau das ist, was der Autor oben versucht hat. Ich hoffe, dass dieses Skript jemand anderem hilft. Ich habe es jetzt schon oft benutzt.Daher musste ich die Gruppe "GNOME DESKTOP" auf meinem RHEL7-Server "Minimal Install" installieren, auf dem keine X / GUI konfiguriert war.
Hmmmmm ... keine Gruppenliste auf der DVD für yum (yep, ich habe alle üblichen "google" -Fixes ausprobiert und es hat nie funktioniert), also habe ich auf die harte Quelle der Liste von xml zurückgegriffen.
Vorausgesetzt, Sie sind gelaufen
createrepo /your/local_rpms/dir
.quelle