쉘 스크립트 - 쉘 스크립트를 사용하여 특정 태그의 모든 항목에서 콘텐츠를 가져옵니다.

쉘 스크립트 - 쉘 스크립트를 사용하여 특정 태그의 모든 항목에서 콘텐츠를 가져옵니다.

내 서버에 XML 파일이 있습니다. 이 파일에는 많은 태그가 있는데 그 중에 "container" 태그와 같은 태그가 있습니다. 모든 컨테이너 태그 콘텐츠의 콘텐츠를 별도로 가져와야 합니다. 미리 감사드립니다.

예상되는 출력이 포함된 문제 설명

답변1

태그 내에 개행 문자가 없고 Container같은 줄에 두 개의 태그가 없는 가장 간단한 경우를 고려하면,

sed -n 's_.*<Container \([^>]*\) />.*_\1_p' filename

원하는 출력을 제공해야합니다.

  • s명령은 패턴을 대체 패턴으로 바꿉니다.
  • .*<Container전체 줄을 태그 시작 부분과 일치시킵니다. 삭제하고 싶습니다.
  • [^>]*>(여러 태그를 캡처하는 것을 방지하기 위한 것임)을 제외하고 모든 문자 수와 일치합니다 . 이것은 \(\)교체에 사용할 수 있도록 보관하고 싶은 부분입니다.\1
  • />.*당신이 버리고 싶은 줄의 나머지 부분입니다
  • \1의 교체는 첫 번째 쌍과 일치하는 부품을 나타내 \(\)므로 이것이 인쇄하려는 것입니다.
  • 일치하는 경우 출력을 인쇄하고 이 옵션 p은 다른 출력을 억제 합니다.-n

상황이 더 복잡해지면 전문적인 XML 도구나 XML 구문 분석 라이브러리를 사용하는 것이 좋습니다 python.

관련 정보