Natywne polecenie powłoki ustawione na wyodrębnianie wartości węzła z XML
Próbuję wyodrębnić wartość węzła z pliku pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project>
<parent>
<groupId>org.me.labs</groupId>
<artifactId>my-random-project</artifactId>
<version>1.5.0</version>
</parent>
...
</project>
Muszę wyodrębnić artifactId i wersję z XML za pomocą polecenia powłoki. Mam następujące wymagania / obserwacje:
Skrypt powłoki zostanie wykonany w pliku kompilacji, którego używamy w pracy, więc im mniejszy skrypt, tym lepiej.Ponieważ będzie używany w wielu systemach (zwykle RHEL5), szukam czegoś, co może działać natywnie na domyślnych obrazach.Znaczniki takie mogą występować w innym miejscu pom, więc nie mogę po prostu obudzić tych tagów.Próbowałem:
xpath
działa na moim Macu, ale domyślnie nie jest dostępny na maszynach RHEL. Podobnie dlaxmllint --xpath
, które, jak sądzę, jest dostępne tylko w późniejszych wersjachxmllint
, których nie mam i nie mogę egzekwować.xmllint --pattern
wydawało się obiecujące, ale wydaje mi się, że nie mam wyjściaxmllint --pattern '//project/parent/version' pom.xml
(drukuje cały XML) lubxmllint --stream --pattern '//project/parent/version' pom.xml
(brak wyjścia).Zdaję sobie sprawę, że jest to powszechne pytanie tutaj, ale powyższe punkty są powodem, dla którego nie mogę użyć tych odpowiedzi. TIA dla twojej pomocy.