wget과 grep을 결합하는 방법


11

html 페이지 URL이 있고 grep하고 싶습니다. 어떻게하면 wget someArgs | grep keyword됩니까?

내 첫 번째 아이디어는 wget -q -O - url | grep keyword이지만 wget의 출력 바이 패스 grep이며 원래 형식으로 터미널에서 발생합니다.


한 줄은 grep을하는 것처럼 전체 웹 페이지를 볼 수 있도록 (예) 캐리지 리턴과 줄 바꿈 문자로 구분 된 그렙 선택 라인이있는 HTML 응답은로 <br> 또는 <P> 같은 마크 업 텍스트가 라인을 가지고하지 않습니다
RedGrittyBrick

1
@RedGrittyBrick OP의 명령은 완벽하게 작동합니다.
slhck 2016 년

답변:


11

가장 쉬운 방법은 자동curl 옵션과 함께 사용 하는 것 -s입니다 .

curl -s http://somepage.com | grep whatever

@ slhck : 두 명령이 모두 똑같습니다.
데니스

시도 @Dennis curl보내고 http://superuser.com/questions/431581. 어떤 이유로 든 나는이 특정 URL로 테스트했지만 출력을 얻지 못했습니다. 내가 뭘 놓친 지 몰라
slhck 2016 년

@slhck : 컬은 기본적으로 리디렉션을 따르지 않습니다. 그것은으로 수행 -L스위치.
Dennis

@Dennis 삭제 된 댓글을 보지 않고 무슨 말을했는지 몰랐습니다. 그러나 그렇습니다. 정리해 주셔서 감사합니다.
slhck

1
질문은 wget을 요구합니다. 컬하지 않습니다. 여러 리디렉션 및 -L 옵션에서는 작동하지 않습니다.
Ligemer 2016 년

11

완전성을 위해 이것을 유지하십시오.

귀하의 예는 실제로 작동합니다. 구문은 정확하며 여기에 방금 시연 한 좋은 GNU wget1.13.4 의 스크린 캐스트가 있습니다.

wget -q some-url -O - | grep something

따라서 패턴이 잘못되었다고 가정하고 grep모든 것을 출력하십시오.


URL의 오타 일 수도 있습니다. 를 사용하면 -q오류 메시지가 없습니다.
Dennis


3

머리글을 그 리핑하거나 파이프로 보려는 경우 표준 헤더로 stderr에 연결되므로 리디렉션해야합니다. 예 :

wget -O - http://example.com/page.php > /dev/null 2>&1 | grep HTTP

2
이것이 올바른 방법입니다, 감사합니다!
Udayraj Deshmukh


0

wget출력은로 출력 stderr 하지 않으므로 stdout로 리디렉션해야 stderr합니다 stdout.

wget -q -O - url 2&>1 | grep keyword
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.