Cara menggabungkan wget dan grep

11

Saya memiliki url halaman html dan saya ingin melihatnya. Bagaimana saya bisa melakukannya wget someArgs | grep keyword?

Gagasan pertama saya adalah wget -q -O - url | grep keyword, tetapi keluaran byget wget grep dan muncul pada terminal dalam bentuk aslinya.

Jofsey
sumber
grep memilih baris yang dibatasi oleh (misalnya) carriage return dan karakter linefeed, respons HTML tidak memiliki baris yang memiliki teks dengan markup seperti <br> atau <p> sehingga seluruh halaman web dapat terlihat seperti satu baris untuk
dipahami
1
@RedGrittyBrick Perintah OP bekerja dengan sempurna untuk saya.
slhck

Jawaban:

11

Cara termudah adalah menggunakan curlopsi -suntuk diam:

curl -s http://somepage.com | grep whatever
Marco
sumber
@ Slhck: Kedua perintah melakukan hal yang persis sama untuk saya.
Dennis
@Dennis Coba curling http://superuser.com/questions/431581. Untuk alasan apa pun saya mengujinya dengan URL khusus ini dan tidak mendapatkan hasil. Entah apa yang saya lewatkan.
slhck
@ slhck: Curl tidak mengikuti arahan secara default. Itu dengan -Lsaklar.
Dennis
@ Dennis Tidak tahu apa yang Anda bicarakan tanpa melihat komentar yang dihapus - tapi ya, itu masuk akal. Terima kasih sudah membereskannya.
slhck
1
Pertanyaan meminta wget. Bukan ikal. Ini tidak akan berfungsi dengan beberapa pengalihan dan opsi -L.
Ligemer
11

Menjaga ini di sekitar demi kelengkapan.

Contoh Anda seharusnya bekerja. Sintaksnya benar, dan ini screencast yang baru saja saya tunjukkan , dengan GNU wget1.13.4 tua yang bagus .

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

Jadi anggaplah pola Anda salah dan grephanya akan menampilkan semua yang didapatnya.

slhck
sumber
Bisa juga salah ketik di URL. Dengan -q, tidak ada pesan kesalahan.
Dennis
3

Bug ini ada di v1.12.1 diperbaiki di versi lain . Saat ini saya menggunakan v1.15 dan berfungsi seperti yang diharapkan.

Leben Gleben
sumber
3

Jika Anda ingin grep atau header pipa, mereka standar diarahkan ke stderr sehingga Anda perlu mengarahkan mereka. Misalnya:

wget -O - http://example.com/page.php > /dev/null 2>&1 | grep HTTP
ErichBSchulz
sumber
2
Ini adalah cara yang benar untuk melakukannya, terima kasih!
Udayraj Deshmukh
Lihat juga jawabannya di sini
Suzana
0

Tulis wgethasilnya untuk stderr tidak stdout, jadi kita perlu mengarahkan stderrke stdout:

wget -q -O - url 2&>1 | grep keyword
vstepaniuk
sumber