Mam plik .xml i próbuję wykonać „instalację grupową” na komputerze RHEL6, ponieważ plik ten zawiera kilkaset bibliotek ... (blisko 16 000 wierszy).
Dlatego próbuję wyodrębnić nazwy grup zawarte w pliku .xml, który ma następującą strukturę:
<b>
<group>
<id> group name </id>
<packages>
...
</packages>
<id> group name 2 </id>
<packages>
...
</packages>
<id> etc... </id>
</group>
</b>
Zasadniczo to właśnie próbowałem:
sed -n '/<id>/,/<\/id>/p' test1.txt > test2.txt
Skopiowałem plik .xml do test1.txt. Próbuję wyodrębnić nazwy grup z test1.txt do drugiego pliku o nazwie test2.txt. Jednak z linią powyżej wyodrębnia wszystko od PIERWSZEGO <id>
znacznika do ostatniego </id>
znacznika w moim pliku. Jak mogę zmienić kod, aby wyodrębnić go kilka razy?
Moje drugie pytanie brzmi: czy wtyczka -downloadonly działa również z grupami dla yum?
Odpowiedzi:
Wygląda na to, że potrzebujesz czegoś więcej
(zakładając, jak w twojej próbce, że
<id>
i</id>
są na tej samej linii i że jest tylko jedna<id>...</id>
na linię).Lub użyj narzędzia obsługującego XML:
źródło
Spróbuj z
źródło
Będzie to działać z dowolnym tagiem, oczywiście także z
<a href="...">...</a>
kotwicami. Nie użyto GNUism -sed
wystarczy podstawowa obsługa wyrażeń regularnych .Należy jednak pamiętać, że zarówno otwierające, jak i zamykające tagi muszą znajdować się w tym samym wierszu, w przeciwnym razie instrukcja musiałaby zostać przepisana ponownie.
źródło
To jest XML, powinieneś użyć parsera XML. Oto rozwiązanie wykorzystujące XMLStarlet :
Wyrażenie XPath
//group/id
wybierze dowolnyid
węzeł poniżejgroup
węzła. Te-t -v
środki „użyć następującego szablonu, aby wyodrębnić wartości”. Na-nl
końcu upewni się, że wyjście jest zakończone nową linią.W powyższym przykładzie użyto pliku XML identycznego z twoim, ale z
...
usuniętym wierszem .źródło
Przeczytałem ten post, szukając rozwiązania problemu wyodrębnienia Reqd. Pakiety z DVD RHEL 7.3
repos.xml
, które moim zdaniem są dokładnie tym, co próbował autor powyżej. Mam więc nadzieję, że ten skrypt może pomóc komuś innemu… Używałem go już wiele razy.Musiałem więc zainstalować grupę „GNOME DESKTOP” na moim serwerze RHEL7 „Minimalna instalacja”, w którym nie skonfigurowano interfejsu X / GUI.
Hmmmmm… brak listy grup na DVD dla mniam (tak, próbowałem wszystkich zwykłych poprawek „google” i nigdy nie działało), więc uciekłem się do twardego źródła listy z xml.
Zakładając, że uciekłeś
createrepo /your/local_rpms/dir
.źródło