아래와 같이 cURL을 사용하여 웹 사이트에서 URL을 추출하고 있습니다.

curl www.somesite.com | grep "<a href=.*title=" > new.txt 

내 new.txt 파일은 다음과 같습니다.

<a href="http://website1.com" title="something"> <a href="http://website1.com" information="something" title="something"> <a href="http://website2.com" title="some_other_thing"> <a href="http://website2.com" information="something" title="something"> <a href="http://websitenotneeded.com" title="something NOTNEEDED"> 

그러나 아래 정보 만 추출하면됩니다.

<a href="http://website1.com" title="something"> <a href="http://website2.com" information="something" title="something"> 

<a href를 무시하려고합니다. > 정보 제목이 필요하지 않음 로 끝납니다.

내 grep 문을 어떻게 수정할 수 있습니까?

댓글

  • 출력이 귀하입니까 ' 여기에 올바르게 표시되고 있습니까? 이를 설명하는 텍스트는 '이 예에서는 의미가 없습니다.
  • Aren ' curl www.somesite.com | grep "<a href=.*title=" | grep -v NOTNEEDED > new.txt?
  • @terdon, 정확히 제가 찾던 것입니다. 게시하시면 답변으로 받아 들일 수 있습니다.
  • Ramesh, 그것은 ' 기본적으로 @slm ' s 대답. 당신이 받아 들일 수 있도록 방금 편집했습니다.
  • 오, 네, 파이프가 이렇게 강력하다는 것을 몰랐습니다. 나는 그것을 대답으로 받아 들였다. 감사합니다!

답변

귀하의 예와 설명을 완전히 따르지는 않지만 귀하의 말처럼 들립니다. 원하는 것은 다음과 같습니다.

$ grep -v "<a href=.*title=.*NOTNEEDED" sample.txt <a href="http://website1.com" title="something"> <a href="http://website1.com" information="something" title="something"> <a href="http://website2.com" title="some_other_thing"> <a href="http://website2.com" information="something" title="something"> 

예 :

$ curl www.example.com | grep -v "<a href=.*title=" | grep -v NOTNEEDED > new.txt 

댓글

  • < a href 섹션에 클래스가 있습니다. 기본적으로 출력에 포함하고 싶지 않습니다.

Answer

grep 매뉴얼 페이지 내용 :

-v, --invert-match Invert the sense of matching, to select non-matching lines. (-v is specified by POSIX .) 

여러 반전에 정규 표현식을 사용할 수 있습니다.

grep -v "red\|green\|blue" 

또는

grep -v red | grep -v green | grep -v blue 

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다