मैं पीछा करने के लिए जाऊंगा लेकिन थोड़ा अलग। यदि आपके पास एक टेक्स्ट स्निपेट है जैसे आपके पास एक टेक्स्ट फाइल है जिसे स्ट्रिंग्स कहा जाता है। तो आप इस प्रकार कर सकते हैं:
grep http ./strings.txt | sed 's/http/\nhttp/g' | grep ^http | sed 's/\(^http[^ <]*\)\(.*\)/\1/g' | grep IWANTthis | sort -u
स्पष्टीकरण:
grep http ./st3.txt => will catch lines with http from text file
sed 's/http/\nhttp/g' => will insert newline before each http
grep ^http => will take only lines starting with http
sed 's/\(^http[^ <]*\)\(.*\)/\1/g'
=> will preserve string from ^http until first space or < (the latter in hope if
grep IWANTthis => will take only urls containing your text of your interest; you can omit this.
sort -u => will sort the list and remove duplicates from it
जैसा कि एक मौका है कि यूआरएल काम नहीं कर सकता है आप अपने यूआरएल ऑफ इंटरेस्ट के साथ अतिरिक्त त्रुटि जांच कर सकते हैं। जैसे wget -p URL -O /dev/null
- URL उपलब्ध नहीं होने की स्थिति में यह काफी अलग-अलग त्रुटि कोड प्रिंट करेगा, इसलिए आप लिंक की अपनी सूची को संसाधित करने और उनकी वैधता स्थिति को आउटपुट करने के लिए एक लूप सेट कर सकते हैं।
यदि आप अंततः html फ़ाइलों से लिंक निकाल रहे हैं तो sed
विशेष मामलों में कुछ परेशानी हो सकती है । जैसा कि यह एक मजाकिया (पोस्ट) में सुझाव दिया गया है जिसे आपने शायद पहले से ही देखा है - यह सबसे अच्छा हो सकता है कि रेगेक्स का उपयोग न करें लेकिन एक html पार्सर इंजन। ऐसा आसानी से उपलब्ध पार्सर पाठ केवल ब्राउज़र lynx
(किसी भी लिनक्स पर उपलब्ध) है। यह आपको तुरंत एक फ़ाइल में सभी लिंक की सूची को डंप करने की अनुमति देता है और फिर आप बस उस यूआरएल को निकालते हैं जिसे आप grep के साथ चाहते हैं।
lynx -dump -listonly myhtmlfile.html | grep IWANTthisString | sort -u
हालांकि यह लिंक के साथ ज्यादातर मैंगल्ड html फाइल या टेक्स्ट स्निपेट पर काम नहीं करेगा।