Poszukuję plików xml, które mają określone właściwości. Na przykład pliki, które zawierają następujący wzór:Najprostszy sposób na podstawowe parsowanie xml z wiersza poleceń unix
<param-value>
<name>Hosts</name>
<description>some description</description>
<value></value>
</param-value>
dla takich plików, chciałbym przeanalizować wartości innej zmiennej, takich jak:
<param-value>
<name>Roles</name>
<description>some description</description>
<value>asdf</value>
</param-value>
i wydrukować nazwę pliku wraz z "asdf". Jaki jest najprostszy sposób na wykonanie tego z linii poleceń?
Jednym podejściem, o którym myślałem było użycie grep z opcją -l do filtrowania pasujących plików, a następnie użycie xargs grep do wyodrębnienia wartości Role. Jednak grep nie działa dobrze w przypadku wyrażeń regularnych wieloliniowych. Widziałem inne pytanie, które pokazało, że można to zrobić za pomocą opcji -Pzo, ale nie miałem szczęścia, żeby działało w moim przypadku. Czy istnieje prostsze podejście?
Czy jest jakiś szczególny powód, dla którego nie chcesz używać języka skryptowego, takiego jak Perl? – Tom
Nie, rozwiązanie perlowe byłoby świetne, najlepiej kompaktowe jednoliniowe, ale nie wiem, jak najlepiej go napisać. – jonderry
Byłoby pomocne mieć rozwiązanie, które działa tylko z najbardziej podstawowych narzędzi, xmlstarlet, xpath i perl's xpath moduł nie są zainstalowane w systemie, w którym mam zamiar wykonać wyszukiwanie. – jonderry