sed 명령(또는 awk)을 사용하여 파일 섹션에서 다른 줄이 일치하면 줄을 변경하고 싶습니다. 다음은 파일의 예입니다.
MyFic.txt 추출:
<PlayList>
... Some tags ...
<Album>X1</Album>
... oThers tags ...
<Group>X2</Group>
... Some tags ...
</PlayList>
<PlayList>
... Some tags ...
<Album>...</Album>
... oThers tags ...
<Group>...</Group>
... Some tags ...
</PlayList>
태그 Album 값이 X1인 경우 Group by X3 태그 값을 PlayList 섹션으로만 변경하고 싶습니다. 다음 명령은 잘 작동합니다.
sed -i '/< Album>X1/,/<\/PlayList>/ s/< Group>.*/< Group>X3<\/location>/' MyFic.txt
하지만 이것은 내가 정말로 원하는 것이 아니다. 나는 다음과 같은 것을 원합니다 :
sed -i '/< PlayList>/,/<\/PlayList>/ {Containing < Album>X1} s/< Group>.*/< Group>X3<\/location>/' MyFic.txt
sed 명령을 사용하여 이 부분을 코딩하는 방법을 모르겠습니다.{Containing < Album>X1}
어떤 생각이 있나요?
답변1
XML을 처리하려면 적절한 XML 처리 도구를 사용하십시오. 예를 들어,xsh:
cd //PlayList[Album='X1']/Group
set . 'X3'