Seperti yang saya katakan di komentar saya, umumnya bukan ide yang baik untuk mem-parsing HTML dengan Ekspresi Reguler, tetapi Anda kadang-kadang bisa lolos jika HTML yang Anda parsing berperilaku baik.
Untuk hanya mendapatkan URL yang ada dalam hrefatribut <a>elemen, saya merasa paling mudah untuk melakukannya dalam beberapa tahap. Dari komentar Anda, sepertinya Anda hanya menginginkan domain tingkat atas, bukan URL lengkap. Dalam hal ini Anda dapat menggunakan sesuatu seperti ini:
grep -Eoi '<a [^>]+>' source.html |
grep -Eo 'href="[^\"]+"' |
grep -Eo '(http|https)://[^/"]+'
di mana source.htmlfile yang berisi kode HTML untuk diuraikan.
Kode ini akan mencetak semua URL tingkat atas yang terjadi sebagai hrefatribut dari setiap <a>elemen di setiap baris. The -ipilihan untuk pertama grepperintah adalah untuk memastikan bahwa ia akan bekerja pada kedua <a>dan <A>elemen. Saya kira Anda juga bisa memberi -ike-2 grepuntuk menangkap HREFatribut huruf besar , OTOH, saya lebih suka mengabaikan HTML yang rusak. :)
Untuk memproses isi http://google.com/
wget -qO- http://google.com/ |
grep -Eoi '<a [^>]+>' |
grep -Eo 'href="[^\"]+"' |
grep -Eo '(http|https)://[^/"]+'
keluaran
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
Keluaran saya sedikit berbeda dari contoh lain ketika saya diarahkan ke halaman Google Australia.