다음에 추가

다음에 추가

내 입력 파일은 다음과 같습니다

입력 파일

<ReconSummary>
<entryName>Total Deep</entryName>
<Code>777</Code>
<License>L</License>
<Tran>H20</Tran>
<job>1234</job>
</ReconSummary>


<ReconSummary>
<entryName>Total Saurav</entryName>
<Code>666</Code>
<License>L</License>
<Tran>H20</Tran>
<job>1234</job>
</ReconSummary>

내 코드는 다음과 같습니다

LineNum=`grep -n "Deep" deep.xml | cut -d: -f 1 | awk -F '[\t]' '{$NF = $NF -1;}1'`
sed -i "/$LineNum/s/^/<!--/" deep.xml

필요한 것은 다음과 같습니다.- LineNum 변수를 통해 얻은 줄 번호로 이동하고 xml 태그 앞에 <!--를 추가하고 싶습니다. 이 방법으로 내 예제 출력은 다음과 같습니다.

<!--<ReconSummary>
<entryName>Total Deep</entryName>
<Code>777</Code>
<License>L</License>
<Tran>H20</Tran>
<job>1234</job>
</ReconSummary>


<ReconSummary>
<entryName>Total Saurav</entryName>
<Code>666</Code>
<License>L</License>
<Tran>H20</Tran>
<job>1234</job>
</ReconSummary>

나는 그것을 할 수 없습니다. 내 코드에서 어떤 실수를 저지르고 있는지 말해 줄 수 있는 사람이 있나요?

답변1

본질적으로 XML 구문 분석 도구를 사용하여 XML 파일에 잘못된 방식으로 접근하고 있습니다.

그러나 이 특정 질문의 경우: 파일 줄을 반대로 하여 원하는 접두사를 줄에 추가하십시오.뒤쪽에"깊이"하고 출력을 다시 반전시킵니다.

tac file.xml | sed '/Deep/ {n; s/^/<!--/}' | tac

결과를 다시 원본 파일에 저장하려면 다음 중 하나를 수행하십시오.

sudo apt install moreutils

tac file.xml | ... | sponge file.xml

또는

tmp=$(mktemp)
tac file.xml | ... > "$tmp" && mv "$tmp" file.xml

"깊은" 문단에 댓글을 달고자 할 때 다음을 사용하세요.

perl -00 -lpe '$_ = "<!-- $_ -->" if /Deep/' file.xml

관련 정보