Bash에서 태그를 사용하여 파일을 래핑하는 방법

Bash에서 태그를 사용하여 파일을 래핑하는 방법

다음과 같이 루트 태그 없이 xml호출된 파일이 있습니다 .test.xml

<cat></cat>
<name></name>
<id></id>
<cat></cat>
<name></name>
<id></id>

출력이 다음과 같도록 파일을 루트 태그로 래핑하려면 어떻게 해야 합니까?

<root>
  <cat></cat>
  <name></name>
  <id></id>
  <cat></cat>
  <name></name>
  <id></id>
</root>

답변1

리디렉션을 통해 이 작업을 수행할 수 있습니다.

(echo "<root>"; cat test.xml; echo "</root>") > wrapped-test.xml

들여쓰기를 사용하면 다음과 같습니다.

(echo "<root>"; sed 's/^/  /' test.xml; echo "</root>") > wrapped-test.xml

답변2

첫 번째 줄 앞에 ( ) 여는 태그를 삽입 i\하고 마지막 줄( ) 뒤에 $( ) a\닫는 태그를 추가합니다(공백 서식은 신경쓰지 않습니다).

편집하다GNU: 어떤 버전이 필요한지 언급하는 것을 잊었습니다 .sed

콘텐츠 script.sed:

1 i\
<root>
$ a\
</root>

다음과 같이 실행하세요:

sed -f script.sed infile

다음 출력으로:

<root>
<cat></cat>
<name></name>
<id></id>
<cat></cat>
<name></name>
<id></id>
</root>

관련 정보