
como posso combinar audio.itunes.apple.com e ignorarhttp://streamingaudio.itunes.apple.comem um arquivo de log usando grep?
Responder1
A maioria grep
das implementações suporta uma -w
opção parapalavracorresponder:
grep -wF audio.itunes.apple.com
Ou para grep
implementação (como o Solaris) que não pode ser usada -w
em combinação com -F
:
grep -w 'audio\.itunes\.apple\.com'
Só encontraria linhas que contenham, audio.itunes.apple.com
desde que não sejam precedidas nem seguidas por umcaractere de palavra(caracteres de palavras sendo alfanuméricos ou sublinhados (restritos aos de byte único para versões do GNU grep
anteriores a 2.19)). Algumas grep
implementações como no Solaris também restringem a string correspondente para começar (embora não necessariamente termine) com um caractere de palavra, a menos que esse caractere que não seja de palavra esteja no início da linha (embora isso não faça diferença neste caso, pois o primeiro caractere do a parte correspondente sempre será a
um caractere de palavra).
Então aqui ele corresponderia http://audio.itunes.apple.com
porque /
é um caractere que não é de palavra, mas não http://streamingaudio.itunes.apple.com
porque o g
que precede audio
é 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 grep
implementações, incluindo o GNU, grep
suportam um \<
operador regexp que corresponde à transição entre uma não-palavra e uma palavra (o Solaris grep
tem \<
a mesma restrição extra estranha -w
acima). Então você pode usar:
grep '\<audio\.itunes\.apple\.com'
com essas grep
implementações.
Responder2
Por favor use -v, --invert-match
Inverta o sentido de correspondência para selecionar linhas não correspondentes. (-v é especificado por POSIX.)