이 명령이 나에게 작동하지 않는 이유를 찾으려고 노력하고 있습니다.
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
지시하기 때문에 작동하지 않습니다 .sed
pattern1
pattern2
문제가 sed
해결될 수도 있지만 내용에 따라 다릅니다 somestupidstuff
(예: 모든 경우에 동일합니까 등).