जैसा कि मैंने अपनी टिप्पणी में कहा, आम तौर पर HTML को रेगुलर एक्सप्रेशंस के साथ पार्स करना अच्छा नहीं है, लेकिन यदि आप जिस HTML को पार्स कर रहे हैं वह अच्छी तरह से व्यवहार में है तो आप कभी-कभी इससे दूर हो सकते हैं।
केवल उन URL को प्राप्त करने के लिए जो तत्वों की href
विशेषता में <a>
हैं, मुझे इसे कई चरणों में करना आसान लगता है। आपकी टिप्पणियों से, ऐसा लगता है कि आप केवल शीर्ष स्तर का डोमेन चाहते हैं, पूर्ण URL नहीं। उस मामले में आप कुछ इस तरह का उपयोग कर सकते हैं:
grep -Eoi '<a [^>]+>' source.html |
grep -Eo 'href="[^\"]+"' |
grep -Eo '(http|https)://[^/"]+'
जहां source.html
HTML कोड पार्स करने के लिए फाइल है।
यह कोड उन सभी शीर्ष-स्तरीय URL को प्रिंट करेगा जो प्रत्येक पंक्ति में href
किसी भी <a>
तत्व की विशेषता के रूप में होते हैं । -i
पहले करने का विकल्प grep
आदेश सुनिश्चित करने के लिए है कि यह दोनों पर काम करेंगे है <a>
और <A>
तत्वों। मुझे लगता है कि आप -i
2 को भी दे सकते हैंgrep
ऊपरी मामले की HREF
विशेषताओं को कैप्चर को , OTOH, मैं ऐसे टूटे हुए HTML को अनदेखा करना पसंद करूंगा। :)
की सामग्री को संसाधित करने के लिए http://google.com/
wget -qO- http://google.com/ |
grep -Eoi '<a [^>]+>' |
grep -Eo 'href="[^\"]+"' |
grep -Eo '(http|https)://[^/"]+'
उत्पादन
http://www.google.com.au
http://maps.google.com.au
https://play.google.com
http://www.youtube.com
http://news.google.com.au
https://mail.google.com
https://drive.google.com
http://www.google.com.au
http://www.google.com.au
https://accounts.google.com
http://www.google.com.au
https://www.google.com
https://plus.google.com
http://www.google.com.au
मेरा आउटपुट अन्य उदाहरणों से थोड़ा अलग है क्योंकि मुझे ऑस्ट्रेलियाई Google पृष्ठ पर पुनः निर्देशित किया गया है।