2016-12-08 1 views
0

Я пытаюсь отредактировать файл xml с помощью скрипта оболочки. Я нашел некоторую помощь, например, this. Но структура моего XML-файла немного отличается. Это пример моего файла XML:Структура XML-файла при редактировании xml-файла с помощью сценария оболочки

<Code> 
    <Type name="abc">this is ABC</Type> 
    <Type name="xyz">this is XYZ</Type> 
</Code> 

Здесь я хочу, чтобы получить this is ABC и this is XYZ текст, а затем добавить строку с ними, как это:

<Code> 
    <Type name="abc">this is ABC EDITED</Type> 
    <Type name="xyz">this is XYZ EDITED</Type> 
</Code> 

я могу редактировать 'abc' как это :

xmlstarlet ed --inplace -u "/Code/Type[@name='abc']/@name" -v abc_edited ./abc.xml 

Но как я могу изменить 'this is ABC' строку, где 'this is ABC' может быть ничего неизвестно?

+0

, если вы в порядке с 'sed':' sed -e' s/это ABC/& EDITED/'-e'/это XYZ/& EDITED/'input.xml'. Однако лучше не выполнять это, перейдите к 'xmlstarlet'. –

+0

Строка 'this is ABC' может быть любой. Я знаю только имя 'name =" abc "'. Итак, можете ли вы рассказать мне, как это сделать с помощью xmlstarlet? –

+0

Если бы я мог. Кто-то другой. –

ответ

0

Это может быть сделано с использованием AWK

Content = (кот abc.xml | AWK -f '[{}]' '/ типом имя = "а" /' {печати $ 3} | СЭД «s/это ABC/это ABC EDITED/i ')

+0

Строка 'this is ABC' может быть чем угодно. Я знаю только имя 'name =" abc "'. Итак, это невозможно –

Смежные вопросы