Мне удалось извлечь значение из файла XML:
<--more labels up this line>
<ExtraDataItem name="GUI/LastVMSelected" value="14cd3204-4774-46b8-be89-cc834efcba89"/>
<--more labels and text down this line-->
, используя это:
UUID=$(sed -ne '/name="GUI\/LastVMSelected"/s/.*value="\([^"]*\)".*/\1/p' inputfile.xml)
echo $UUID
У меня есть этот результат в консоли:
14cd3204-4774-46b8-be89-cc834efcba89
Вот и все!Но теперь мне нужно использовать этот UUID, чтобы перейти к другой части того же XML-файла, который я раньше не показывал.Я упростил XML-файл, чтобы показать наиболее релевантные метки:
<--more labels up this line>
<ExtraDataItem name="GUI/LastVMSelected" value="14cd3204-4774-46b8-be89-cc834efcba89"/>
<--more labels and text down this line-->
<MachineEntry uuid="{14cd3204-4774-46b8-be89-cc834efcba89}" src="Machines/SomeMachine/SomeMachine.xml"/>
<--more labels and text down this line-->
Мне нужно получить «SomeMachine» без расширения, только это имя.Я попытался сам добавить несколько строк:
UUID=$(sed -ne '/name="GUI\/LastVMSelected"/s/.*value="\([^"]*\)".*/\1/p' inputfile.xml)
LastVMname=$(sed -ne '/MachineEntry uuid="{'$UUID'}"/s/.*src="Machines\([^"]*\).xml".*/\1/p' inputfile.xml)
echo $LastVMname
Но я получаю такой вывод:
/SomeMachine/SomeMachine
, и я не знаю, как избавиться от / SomeMachine / SomeMachine, просто нужно "SomeMachine».Документация Sed довольно запутанная: S