명령줄을 사용하여 XML 파일의 여러 줄 수정

명령줄을 사용하여 XML 파일의 여러 줄 수정

아래 텍스트를 살펴보세요. 여러 줄의 텍스트를 어떻게 바꿀 수 있나요?

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

출력은 다음과 같습니다.

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

sedBash에서 작동하는 명령줄 유틸리티를 사용하여 이 작업을 수행 하고 싶습니다 . 이 작업을 수행하려면 루프를 사용해야 합니까?

답변1

적절하게 사용하다도구는 케이스에 들어 있으며,좋은 것입니다 :

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]X 경로 표현

참고 1

다음 태그로 xml을 래핑해야 합니다.

<root>
...
</root>

XML이 유효합니다. 문제를 해결하려면 XML 파일을 잘라내시기 바랍니다.

참고²

당신은 또한 사용할 수 있습니다,,잠깐만요...그리고 적절한 XML 라이브러리도 필요합니다.

존재하다:

#!/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,
);

관련 정보