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.


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

@ 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.


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


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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.