Измените несколько строк файла XML с помощью командной строки

Посмотрев текст ниже, как мне заменить несколько строк текста?

<Model500> ABC BCD CDE </Model500> <Model500> 123 234 345 </Model500> 

Выходной сигнал может быть как ниже

 <Model500> AAA BBB CCC </Model500> <Model500> 111 333 555 </Model500> 

Я хотел бы выполнить это с помощью sed но любая утилита командной строки, которая работает с Bash, будет работать. Должен ли я использовать цикл для этого?

Используйте подходящий инструмент xml , в shell, xmlstarlet является хорошим:

 xmlstarlet edit -L -u "//Model500[1]" -v "AAA BBB CCC" file.xml xmlstarlet edit -L -u "//Model500[2]" -v "111 333 555" file.xml cat file.xml 

Выражение //Model500[2] является выражением Xpath

ПРИМЕЧАНИЕ №1

вам нужно приложить свой XML-тег, например:

 <root> ... </root> 

для корректности XML. Надеюсь, вы отрезали файл XML для вашего вопроса.

ПРИМЕЧАНИЕ ²

Вы также можете использовать python , perl , ruby и т. Д. И подходящую библиотеку xml lib.

В perl :

 #!/usr/bin/perl use strict; use warnings; use XML::Simple; my $xml_file = 'file.xml'; my $xml = XMLin( $xml_file, KeepRoot => 1, ForceArray => 1, ); $xml->{root}->[0]->{Model500}->[0] = "AAA\nBBB\nCCC\n"; $xml->{root}->[0]->{Model500}->[1] = "111\n222\n333\n"; XMLout( $xml, KeepRoot => 1, NoAttr => 1, OutputFile => $xml_file, );