como combinar o subdomínio exato com o grep ignorando os outros

0

como posso corresponder a audio.itunes.apple.com e ignorar link em um arquivo de log usando grep?

    
por ramkorla 04.10.2016 / 17:39

2 respostas

2

A maioria das implementações grep suportam uma opção -w para a correspondência palavra :

grep -wF audio.itunes.apple.com

Ou para a implementação de grep (como o Solaris ') que não pode usar -w em combinação com -F :

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

Somente encontrará linhas que contenham audio.itunes.apple.com , desde que não seja precedida nem seguida por um caractere de palavra (caracteres alfanuméricos ou de sublinhado (restritos aos de um único byte para versões do GNU% co_de) % antes de 2.19)). Algumas implementações de grep como no Solaris também restringem a cadeia de caracteres combinada para iniciar (embora não necessariamente final) com um caractere de palavra, a menos que esse caractere não esteja no início da linha (embora isso não faça diferença nesse caso) caractere da parte correspondente sempre será grep , um caractere de palavra).

Então, aqui, ele corresponderia a a , porque http://audio.itunes.apple.com é um caractere sem palavra, mas não em / , pois o http://streamingaudio.itunes.apple.com que precede g é um caractere de palavra.

O equivalente POSIX seria:

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

Ou com BREs:

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

Algumas implementações de audio , incluindo% GNUgrep, suportam um operador grep regexp que corresponde à transição entre uma palavra que não é uma palavra (Solaris \< ' grep tem a mesma restrição extra ímpar como para \< acima). Então você pode usar:

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

com essas implementações -w .

    
por 04.10.2016 / 18:25
0

Por favor use -v, --invert-match

Inverta o sentido da correspondência para selecionar linhas não correspondentes. (-v é especificado por POSIX.)

grep -v link

    
por 04.10.2016 / 18:10