grepping список URL для ключевого слова в доменной части - PullRequest
0 голосов
/ 05 декабря 2010

У меня есть большой список (миллионы) URL-адресов в файле (по одному на строку), например:

http://someDomain.com/articlex=123&b=23

http://KEYWORDindomain.net/blahblah 

http://anotherKEYWORDindomain.org/blahblah/blip/q=123 

http://blabkkk.org/KEYWORD/blip/q=123

 (etc)

Я хочу распечатать все URL-адреса, где определенное ключевое слово появляется в доменной части URL-адреса.

ех.

grep <regex>KEYWORD<regex> file

output
======
http://KEYWORDindomain.net/blahblah
http://anotherKEYWORDindomain.org/blahblah/blip/q=123

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

ближе всего я получил: grep "http: //.* \? /"

У кого-нибудь есть хороший способ сделать это с помощью команд оболочки?

Ответы [ 2 ]

0 голосов
/ 06 декабря 2010

Самое простое выражение, которое квалифицируется следующим образом (вы полагаете, что все, что имеет http: // в нем, является началом URL, что не всегда может быть правдой, но ...):

grep 'http://[^/]*KEYWORD'

Если вы хотите получить больше префиксов URL, попробуйте следующее:

grep '\<[a-z]*://[^/]*KEYWORD'

[^ /] * - это ключ, он означает «любой символ, кроме /, нулевое вхождение или любое количество раз».

Если вы знаете, что в файле, который нужно отсортировать, указан один URL-адрес в строке и что URL-адрес начинается в начале строки, то вы можете защитить себя от маловероятного, но потенциально поддельного http: // в середине строка со следующим:

grep '^http://[^/]*KEYWORD'

Точно так же, как предложил Тим, вы всегда можете не использовать пробелы в этом, если у вас есть основания полагать, что ваш список URL может содержать пробелы (я предпочитаю старый метод перечисления пробелов и табуляции):

grep '^http://[^/ \t]*KEYWORD'

Надеюсь, это поможет.

0 голосов
/ 05 декабря 2010

Попробуйте

\b(https?|ftp|file)://[^/\s]*KEYWORD[^/\s]*(?:/[-A-Z0-9+&@#/%?=~_|$!:,.;]*[A-Z0-9+&@#/%=~_|$])?

Это будет соответствовать URL, который содержит KEYWORD в части перед первой косой чертой (если есть).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...