Cách kết hợp wget và grep


11

Tôi có một url trang html và tôi muốn grep nó. Làm thế nào tôi có thể làm điều đó bằng cách wget someArgs | grep keyword?

Ý tưởng đầu tiên của tôi là wget -q -O - url | grep keyword, nhưng đầu ra của wget bỏ qua grep và phát sinh trên thiết bị đầu cuối ở dạng ban đầu.


grep chọn các dòng được phân tách bằng (ví dụ) trả về vận chuyển và ký tự dòng, một phản hồi HTML không có dòng có văn bản với đánh dấu như <br> hoặc <p> để toàn bộ trang web có thể trông giống như một dòng cho grep
RedGrittyBrick

1
@RedGrittyBrick Lệnh của OP hoạt động hoàn hảo đối với tôi.
slhck

Câu trả lời:


11

Cách đơn giản nhất là sử dụng curlvới các tùy chọn -scho im lặng:

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

@slhck: Cả hai lệnh đều làm giống hệt tôi.
Dennis

@Dennis Hãy thử curling http://superuser.com/questions/431581. Vì bất kỳ lý do gì, tôi đã kiểm tra nó với URL cụ thể này và không có đầu ra. Không có gì tôi đang thiếu.
slhck

@slhck: Curl không theo chuyển hướng theo mặc định. Nó làm với công -Ltắc.
Dennis

@Dennis Không biết bạn đang nói gì mà không thấy các bình luận bị xóa - nhưng vâng, điều đó có ý nghĩa. Cảm ơn đã xóa nó lên.
slhck

1
Câu hỏi yêu cầu cho wget. Không cong. Điều này sẽ không hoạt động với nhiều chuyển hướng và tùy chọn -L.
Ligemer

11

Giữ điều này xung quanh vì lợi ích của sự hoàn chỉnh.

Ví dụ của bạn nên thực sự hoạt động. Cú pháp là chính xác, và đây là một screencast mà tôi vừa thực hiện , với một GNU wget1.13.4 cũ.

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

Vì vậy, giả sử mô hình của bạn là sai và grepsẽ chỉ xuất ra mọi thứ nó có.


Nó cũng có thể là một lỗi đánh máy trong URL. Với -q, không có thông báo lỗi.
Dennis


3

Nếu bạn đang tìm kiếm grep hoặc tiêu đề đường ống, chúng là tiêu chuẩn hướng đến stderr vì vậy bạn cần chuyển hướng chúng. Ví dụ:

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

2
Đây là cách làm chính xác, cảm ơn!
Udayraj Deshmukh

Xem thêm câu trả lời tại đây
Suzana

0

Việc wgetghi đầu ra của nó thành stderr không stdout, vì vậy người ta cần chuyển hướng stderrđến stdout:

wget -q -O - url 2&>1 | grep keyword
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.