![쉘 스크립트 - 쉘 스크립트를 사용하여 특정 태그의 모든 항목에서 콘텐츠를 가져옵니다.](https://linux55.com/image/160803/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20-%20%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%8A%B9%EC%A0%95%20%ED%83%9C%EA%B7%B8%EC%9D%98%20%EB%AA%A8%EB%93%A0%20%ED%95%AD%EB%AA%A9%EC%97%90%EC%84%9C%20%EC%BD%98%ED%85%90%EC%B8%A0%EB%A5%BC%20%EA%B0%80%EC%A0%B8%EC%98%B5%EB%8B%88%EB%8B%A4..png)
답변1
태그 내에 개행 문자가 없고 Container
같은 줄에 두 개의 태그가 없는 가장 간단한 경우를 고려하면,
sed -n 's_.*<Container \([^>]*\) />.*_\1_p' filename
원하는 출력을 제공해야합니다.
- 이
s
명령은 패턴을 대체 패턴으로 바꿉니다. .*<Container
전체 줄을 태그 시작 부분과 일치시킵니다. 삭제하고 싶습니다.[^>]*
>
(여러 태그를 캡처하는 것을 방지하기 위한 것임)을 제외하고 모든 문자 수와 일치합니다 . 이것은\(\)
교체에 사용할 수 있도록 보관하고 싶은 부분입니다.\1
/>.*
당신이 버리고 싶은 줄의 나머지 부분입니다\1
의 교체는 첫 번째 쌍과 일치하는 부품을 나타내\(\)
므로 이것이 인쇄하려는 것입니다.- 일치하는 경우 출력을 인쇄하고 이 옵션
p
은 다른 출력을 억제 합니다.-n
상황이 더 복잡해지면 전문적인 XML 도구나 XML 구문 분석 라이브러리를 사용하는 것이 좋습니다 python
.