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

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

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

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

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

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

  • Разделение файлов в Unix с использованием значений в файле
  • sed first n встречается в результате набора из двух тегов / паттернов
  • Замена всего `&`, но не единственного в XML-сущности `& amp;` с `#` с sed в заданном теге XML
  • Скрипт для изменения файла конфигурации XML
  • Как заменить «&» на «& amp;», за исключением того, что уже является частью XML-объекта?
  • Переформатирование большого количества XML-файлов
  • Извлекать и удалять первое вхождение XML-тега несколько раз
  • Добавление нового атрибута в существующий xml-файл с помощью sed или awk
  • 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, ); 
    Linux и Unix - лучшая ОС в мире.