как сопоставить точный поддомен с grep игнорируя другие

как сопоставить точный поддомен с grep игнорируя другие

как мне сопоставить audio.itunes.apple.com и игнорироватьhttp://streamingaudio.itunes.apple.comв файле журнала с помощью grep?

решение1

Большинство grepреализаций поддерживают -wопциюсловосоответствовать:

grep -wF audio.itunes.apple.com

Или для grepреализации (например, Solaris), которую нельзя использовать -wв сочетании с -F:

grep -w 'audio\.itunes\.apple\.com'

Найдутся только те строки, которые содержат, audio.itunes.apple.comесли перед ними и после них не стоитхарактер слова(символами слов являются буквы, цифры или подчеркивание (ограничено однобайтовыми для версий GNU grepдо 2.19)). Некоторые grepреализации, например, в Solaris, также ограничивают начало совпадающей строки (но не обязательно ее конец) символом слова, если только этот несловесный символ не находится в начале строки (хотя в данном случае это не имеет значения, поскольку первым символом совпадающей части всегда будет aсимвол слова).

Таким образом, здесь он будет соответствовать , http://audio.itunes.apple.comпоскольку /является несловесным символом, но не , http://streamingaudio.itunes.apple.comпоскольку gпредшествующий ему audioявляется словесным символом.

Эквивалент POSIX будет следующим:

grep -E '(^[^[:alnum:]_])audio\.itunes\.apple\.com([^[:alnum:]_]|$)'

Или с BRE:

grep -x '\(.*[^[:alnum:]_]\)\{0,1\}audio\.itunes\.apple\.com\([^[:alnum:]_].*\)\{0,1\}'

Некоторые grepреализации, включая GNU, grepподдерживают \<оператор regexp, который сопоставляется с переходом между не-словом и словом ( grepв Solaris \<есть то же странное дополнительное ограничение, что и -wвыше). Поэтому вы можете использовать:

grep '\<audio\.itunes\.apple\.com'

с этими grepреализациями.

решение2

Пожалуйста, используйте -v, --invert-match

Инвертировать смысл сопоставления, чтобы выбрать несовпадающие строки. (-v указывается в POSIX.)

грэп -vhttp://streamingaudio.itunes.apple.com

Связанный контент