ฉันมี URL ของหน้า html และฉันต้องการ grep มัน ฉันจะทำโดยได้wget someArgs | grep keywordอย่างไร
ความคิดแรกของฉันคือwget -q -O - url | grep keywordแต่เอาท์พุทของ wget ข้าม grep และเกิดขึ้นในอาคารในรูปแบบเดิม
ฉันมี URL ของหน้า html และฉันต้องการ grep มัน ฉันจะทำโดยได้wget someArgs | grep keywordอย่างไร
ความคิดแรกของฉันคือwget -q -O - url | grep keywordแต่เอาท์พุทของ wget ข้าม grep และเกิดขึ้นในอาคารในรูปแบบเดิม
คำตอบ:
วิธีที่ง่ายที่สุดคือใช้curlกับตัวเลือก-sสำหรับปิดเสียง:
curl -s http://somepage.com | grep whatever
curl http://superuser.com/questions/431581ด้วยเหตุผลใดก็ตามที่ฉันทดสอบด้วย URL นี้โดยเฉพาะและไม่มีผลลัพธ์ Dunno สิ่งที่ฉันหายไป
-Lสวิตช์
รักษาสิ่งนี้ไว้รอบ ๆ เพื่อความสมบูรณ์
ตัวอย่างของคุณควรใช้งานได้จริง รูปแบบถูกต้องและนี่คือภาพหน้าจอที่ฉันเพิ่งแสดงให้เห็นโดยมี GNU แบบเก่าที่ดีwget1.13.4
wget -q some-url -O - | grep something
ดังนั้นรูปแบบของคุณถือว่าเป็นสิ่งที่ผิดและgrepจะส่งออกทุกอย่างมันก็เป็นเพียงแค่
-qไม่มีข้อผิดพลาด
จุดบกพร่องนี้อยู่ใน v1.12.1 แก้ไขในรุ่นอื่น ขณะนี้ฉันใช้ v1.15 และทำงานได้ตามที่คาดไว้
หากคุณต้องการที่จะ grep หรือส่วนหัวของท่อพวกเขาเป็นมาตรฐานโดยตรงเพื่อ stderr ดังนั้นคุณต้องเปลี่ยนพวกเขา เช่น:
wget -O - http://example.com/page.php > /dev/null 2>&1 | grep HTTP
การwgetเขียนผลลัพธ์ที่จะstderr ไม่ไปstdoutดังนั้นหนึ่งต้องเปลี่ยนเส้นทางstderrไปที่stdout:
wget -q -O - url 2&>1 | grep keyword