
как мне сопоставить 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.)