태그를 업데이트해야 합니다<\abc> 다른 파일의 변수를 사용합니다. 출력은 abc 태그 내에서 쉼표로 구분된 모든 값을 포함하는 xml 파일이어야 합니다.

태그를 업데이트해야 합니다<\abc> 다른 파일의 변수를 사용합니다. 출력은 abc 태그 내에서 쉼표로 구분된 모든 값을 포함하는 xml 파일이어야 합니다.

file1.xml태그 이름이 있는 xml 파일을 업데이트하는 데 도움이 필요합니다 <abc> <\abc>.

고정 길이 숫자가 있습니다 file2.txt(한 줄에 숫자 1개).

1234
5678
1435

newfile.xml로 출력해야 합니다.

<abc>1234,5678,1435<\abc>

어떤 awk옵션이 있나요 sed?

감사해요

답변1

이 질문은 서로 다른 도구를 사용하여 두 부분으로 구성됩니다.

  1. file2.txt쉼표로 줄을 연결하세요

    paste -s -d',' file2.txt
    1234,5678,1435
    
  2. XML 파일에 값을 삽입합니다(빈 파일을 효과적으로 업데이트함). 이를 위해서는 비XML을 XML로 수정해야 합니다.

    cat file1.xml
    <abc> </abc>
    
    xmlstarlet edit --update '//abc' --value 'test' file1.xml
    <?xml version="1.0"?>
    <abc>test</abc>
    

    출력이 예상한 것과 같다고 확신하면 를 사용할 수 xmlstarlet있습니다 edit --inplace.

이것들을 종합하면,

data=$(paste -s -d',' file2.txt)
xmlstarlet edit --inplace --update '//abc' --value "$data" file1.xml

cat file1.xml
<?xml version="1.0"?>
<abc>1234,5678,1435</abc>

답변2

 perl -pne "s/\n/,/g" k.txt| sed -e "s/^/\<abc>/g" -e "s/,$//g" -e "s/$/\<\\\abc>/g"

산출

<abc>1234,5678,1435<\abc>

관련 정보