Я хочу взять файл XML и заменить значение элемента. Например, если мой XML-файл выглядит так:
<abc>
<xyz>original</xyz>
</abc>
Я хочу заменить исходное значение элемента xyz, каким бы оно ни было, другой строкой, чтобы результирующий файл выглядел так:
<abc>
<xyz>replacement</xyz>
</abc>
Как бы вы это сделали? Я знаю, что мог бы написать Java-программу для этого, но я предполагаю, что это слишком сложно для замены значения одного элемента, и что это можно легко сделать с помощью sed, чтобы выполнить подстановку с помощью регулярного выражения. Однако я менее чем новичок с этой командой и надеюсь, что какая-нибудь добрая душа, прочитавшая это, сумеет дать мне правильное регулярное выражение для работы.
Одна идея - сделать что-то вроде этого:
sed s/\<xyz\>.*\<\\xyz\>/\<xyz\>replacement\<\\xyz\>/ <original.xml >new.xml
Может быть, мне лучше просто заменить всю строку файла тем, чем я хочу, поскольку я буду знать имя элемента и новое значение, которое я хочу использовать? Но это предполагает, что рассматриваемый элемент находится в одной строке и что никакие другие данные XML не находятся в той же строке. Я предпочел бы иметь команду, которая в основном заменит значение элемента xyz новой строкой, которую я указываю, и не нужно беспокоиться, если элемент находится в одной строке или нет, и т. Д.
Если sed не лучший инструмент для этой работы, пожалуйста, позвоните мне, чтобы лучше подходить.
Если кто-нибудь может направить меня в правильном направлении, я действительно это ценю, вы, вероятно, сэкономите мне часы проб и ошибок. Заранее спасибо!
- Джеймс