Я хотел бы отфильтровать пример ниже xml, используя bash.Получить имя атрибута из xml
Проблема: Если атрибут subnode att = "t" существует, имя атрибута должно быть напечатано.
Вход:
<?xml version="1.0" encoding="UTF-8"?>
<general>
<node1>
<subnode att1="a" att2="t" name="test"> </subnode>
<subnode att1="a" name="test2"> </subnode>
<subnode att1="a" name="test3"> </subnode>
<subnode att1="a" att2="t" name="test4"> </subnode>
</node1>
</general>
Выход:
test
test4
Я попытался с помощью Grep и xmllint, но без успеха.
Мое "временное" решение:
xmllint --xpath 'string(//general/node1/subnode[@att2="t"]/@name)' file.xml
Но что команда печать только первое появление - тест.
Не работает, иногда печать еще атрибуты , – profiler
Мне нужен xml-контент для нерабочих случаев, чтобы я мог исправить. Пожалуйста, обновите свой вопрос несколькими случаями. Кроме того, в моем коде предполагается, что вы хотите сопоставить строки, содержащие att [any_number] = "t". Разве это не так? вам просто нужно сопоставить att2 = "t"? –