2015-04-03 3 views
-1

Я новичок в bash, поэтому, пожалуйста, дайте объяснение вашему ответу. Я просмотрел другие подобные вопросы, но я все еще застрял. У меня есть текстовый файл, содержащий около 4 тыс. URL-адресов. Я хотел бы удалить все URL-адреса, которые не являются частью домена.Удалите все URL-адреса, которые не относятся к одному домену

Например, мне нужны только URL-адреса из домена http://www.example.com. Текстовый файл также имеет URL-адреса, такие как mail.example.com, которые меня не интересуют. Если бы меня попросили написать регулярное выражение заинтересованных URL-адресов, это будет ^http://www.example.com/*.

Я пробовал grep -no '^http:\/\/www.example.com\*' listofURLs.txt, но это вернуло все линии вместе с номером строки, который содержит http://www.example.com.

Теперь я мог бы использовать sed и удалить все остальные строки, но это не простое решение. Мне было интересно, есть ли более простой способ сделать это?

Заранее спасибо.

+2

Показать отрывок из 'listofURLs.txt' – John1024

+1

Почему вы используете опцию' -n'? Вам нужны номера строк? – Barmar

+0

Ну, я не могу дать точное содержание файла. Файл содержит URL-адреса, такие как http://mail.example.com, https://www.facebook.com/exapmle, https://www.youtube.com/exaple, http://www.example.com/foo-bar/'и т. д. –

ответ

1

Это должно работать:

grep '^http://www\.example\.com' listofURLs.txt > listofExampleURLs.txt 

Там нет необходимости использовать -o, что это только необходимо, когда вам нужно, чтобы получить только часть строки, которая соответствует регулярному выражению.

+0

Мой плохой. Спасибо. –

Смежные вопросы