Unix에서 여러 줄 바꾸기

Unix에서 여러 줄 바꾸기

다음과 같은 XML 데이터 세트가 있습니다. 추가하고 싶습니다구분 기호메인 레코드가 종료될 때.

  <Record contentId="501" levelId="2"  parentId="0">
    <Record contentId="51873" levelId="361"  parentId="0">
         <Field id="27277" abc="e0f89f0c-6eed-4092-81b2-f8551df81998" type="4">
    </Record>
    <Field id="15584" abc="007ead3c-d1f9-47e2-aaac-c99553fc2a54" type="4">
  </Record>
  <Record contentId="5021427" parentId="0">
    <Record contentId="5099659" parentId="0">
      <Field id="27257" abc="b5eab609-5b3d-44b0-b64b-0eee0fe00951" type="6">5099659</Field>
    </Record>
  </Record>

나는 그것을로 바꾸고 싶다

  <Record contentId="501" levelId="2"  parentId="0">
    <Record contentId="51873" levelId="361"  parentId="0">
         <Field id="27277" abc="e0f89f0c-6eed-4092-81b2-f8551df81998" type="4">
    </Record>
    <Field id="15584" abc="007ead3c-d1f9-47e2-aaac-c99553fc2a54" type="4">
  </Record>@@@@
  <Record contentId="5021427" parentId="0">
    <Record contentId="5099659" parentId="0">
      <Field id="27257" abc="b5eab609-5b3d-44b0-b64b-0eee0fe00951" type="6">5099659</Field>
    </Record>
  </Record>

sed 명령을 다음과 같이 사용합니다.

sed '/^<\/Record>$/{$!{ N; s/^<\/Record>\n  <Record/<\/Record>@@@@\n  <Record/;ty;P;D;:y}}'

답변1

귀하의 소중한 의견에 감사드립니다. 아래 스크립트를 사용하여 문제를 해결할 수 있었습니다.

for j in `cat -n test.xml |grep '<Record '|awk '{print $1-1}'`; do for i in `cat -n test.xml |grep '</Record>' |awk '{print $1}'`; do if [ $i -eq $j ]; then sed -i ""$i"s/<\/Record>/<\/Record>@@@@/" test.xml; fi; done; done

관련 정보