Bagaimana saya bisa mengeriting output dari perintah lain


1

Saya ingin melewatkan hasil keluaran dari awk

./jspider.sh http://www.mypage.com | grep 'resource' | awk '{print $4}' | curl OUTPUT_FROM_AWK | grep myString

Bagaimana saya bisa mencapai ini ?!

Jawaban:


3

Menggunakan xargs.

xargs utility [argument ...]

Utilitas xargs membaca spasi, tab, baris baru dan string akhir file dibatasi dari input standar dan dijalankan utility dengan string sebagai argumen.

Ada lebih banyak parameter dan opsi daripada dalam bentuk singkat ini, tentu saja.


Contoh umum menggunakan curl:

$ echo "http://www.google.com" | xargs curl
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.de/">here</A>.
</BODY></HTML>

Dalam kasus spesifik Anda, akan terlihat mirip dengan yang berikut:

./jspider.sh http://www.mypage.com | grep 'resource' | awk '{print $4}' | xargs curl | grep myString

Besar! Namun dalam kasus saya ini tidak berhasil. Jika memipis ke "xargs echo" juga tidak berfungsi. Saya kira output jspider terlalu cepat atau sth ..
nottinhill

Dalam hal itu, pertimbangkan untuk menambahkan pertanyaan Anda atau membuat pertanyaan baru yang berhubungan dengan masalah spesifik Anda. Saya tidak memiliki masalah khusus ini, mis. curl -s "http://superuser.com" | grep -E 'href="http://.*stackexchange\.com' | sed 's|^.*<a href="http://\([^"]*\)">.*$|http://\1|g' | grep -v "<" | xargs curl -s | grep "<title>" bekerja dengan baik untuk saya. (Ya saya tahu kode ini sangat hacky).
Daniel Beck

Ya ampun .. Saya harus menghapus bagian sed untuk memahami apa yang Anda lakukan, masih tidak bekerja dengan jspider. Saya akan mulai menggunakan perl sekarang.
nottinhill

@StephanKristyn Saya mengekstrak URL dari hyperlink, dan karena itu tidak berfungsi dengan baik, menggunakan grep -v Saya kemudian menghapus semua baris yang tersisa dengan tanda kurung tag HTML. Hanya sebuah contoh sederhana yang menunjukkan bahwa pendekatan ini bekerja secara umum.
Daniel Beck

0

Coba ini, ini belum diuji tetapi harus bekerja.

for a in $(./jspider.sh http://www.mypage.com | grep 'resource' | awk '{print $4}'); do curl $a | grep myString; done
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.