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

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

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

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

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

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

One Solution collect form web for “Измените несколько строк файла XML с помощью командной строки”

Используйте подходящий инструмент 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, ); 
  • Как найти и заменить определенную строку в определенной строке
  • Заменить текст с помощью sed и сохранить часть исходного текста
  • Как я могу избежать специальных символов в команде sed?
  • Найти соответствующие MD5 и XML в каталоге
  • Как отформатировать атрибуты xml, а не только элементы
  • Преобразование операторов XML в SQL INSERT с использованием командной строки
  • Эффективное извлечение данных из нескольких файлов в один файл CSV
  • Удалить строку с пробелами и цитатами из xml-файла
  • Могу ли я преобразовывать поля в XML в теги с помощью xmlstarlet?
  • Заменить значения из файла1 в файл2 awk
  • Переупорядочить текст в каждой строке файла
  • Linux и Unix - лучшая ОС в мире.