두 태그 사이에서 텍스트를 추출하고 포함하는 방법을 설명했습니다.

두 태그 사이에서 텍스트를 추출하고 포함하는 방법을 설명했습니다.

이 명령이 나에게 작동하지 않는 이유를 찾으려고 노력하고 있습니다.

sed -n -e '/<a href=\(.*\)>/,/<\/a>/p' text.html

text.html에는 다음과 같은 내용이 있습니다.

<somestupidstuff> <a href='teste'> teste </a> </somestupidstuff>

원하는 출력은 다음과 같습니다.

<a href='teste'> teste </a>

하지만 내가 얻는 것은 다음과 같습니다.

<somestupidstuff> <a href='teste'> teste </a> </somestupidstuff>

아마도 정규식을 완전히 이해하지 못할 수도 있습니다.

답변1

grep귀하의 경우에 사용하기가 훨씬 쉽습니다. 예를 들어:

grep -o '<a href=[^<]*<\/a>'

다음을 시도해 보세요 <.<a href>..</a>

grep -o '<a href=.*<\/a>'

<a href=...</a>그러나 동일한 문자열이 여러 번 나타날 경우 예상하지 못한 데이터가 반환될 수도 있다는 점에 유의하세요.

sed패턴이 있는 줄을 포함하여 줄과 줄 사이의 모든 줄을 인쇄하도록 /pattern1/,/pattern2/p지시하기 때문에 작동하지 않습니다 .sedpattern1pattern2

문제가 sed해결될 수도 있지만 내용에 따라 다릅니다 somestupidstuff(예: 모든 경우에 동일합니까 등).

관련 정보