Bagaimana cara menggunakan grep untuk mencocokkan nama domain?

4

Saya punya daftar url seperti:

hxxp://url.com/subpage.html
hxxp://www.url2.com/index.php
hxxp://subdomain.url3.com/somepage.php
...

Bagaimana saya bisa menggunakan grep untuk mencocokkan nama domain saja?

Semua url memiliki / setelah domain. Dan ada banyak tlds, tidak yakin berapa banyak, daftarnya cukup besar.

hillacma
sumber

Jawaban:

5

Untuk menggunakan regex non-serakah dengan grep Anda harus menggunakan -P opsi dan -o opsi hanya menampilkan bagian yang cocok. Anda juga perlu menggunakan lookarounds agar bagian dari pertandingan tidak termasuk dalam output.

grep -Po '.*?//\K.*?(?=/)'

Contoh:

$ echo 'hxxp://subdomain.url3.com/somepage.php' | grep -Po '.*?//\K.*?(?=/)'
subdomain.url3.com
Dennis Williamson
sumber
0

Ada tempat yang bagus untuk menguji keterampilan regex Anda sini . Ekspresi seharusnya seperti

.*?//(.*)/

Anda harus mengulang semua hasil. Pada halaman yang saya berikan kepada Anda, Anda dapat menempatkan ekspresi ini dan alamat web dan kemudian akan menunjukkan kepada Anda apa yang cocok. Juga ingat bahwa Anda akan memiliki variabel yang diambil hanya untuk waktu yang terbatas.

Robert Leckie
sumber
Itu tidak akan berhasil http://url.com/directory/page.html
Karl Bielefeldt
0

Jika mereka hanya memiliki satu TLD setelah domain maka ini harus bekerja (saya anggap Anda ingin mengecualikan subdomain):

[^\./]*\.[^\./]*/

Ini masih memiliki garis miring, tetapi Anda bisa langsung menyalurkannya sed.

Hydaral
sumber