
¿Cómo puedo hacer coincidir audio.itunes.apple.com e ignorar?http://streamingaudio.itunes.apple.comen un archivo de registro usando grep?
Respuesta1
La mayoría de grep
las implementaciones admiten una -w
opción parapalabrafósforo:
grep -wF audio.itunes.apple.com
O para grep
implementación (como la de Solaris) que no se puede usar -w
en combinación con -F
:
grep -w 'audio\.itunes\.apple\.com'
Solo encontraría líneas que contengan audio.itunes.apple.com
siempre que no estén precedidas ni seguidas por uncarácter de palabra(los caracteres de las palabras son alfanuméricos o guiones bajos (restringidos a los de un solo byte para las versiones de GNU grep
anteriores a la 2.19)). Algunas grep
implementaciones, como en Solaris, también restringen la cadena coincidente para que comience (aunque no necesariamente termine) con un carácter de palabra, a menos que ese carácter que no sea una palabra esté al principio de la línea (aunque eso no hace ninguna diferencia en este caso, ya que el primer carácter de la línea). la parte coincidente siempre será a
, un carácter de palabra).
Así que aquí coincidiría con http://audio.itunes.apple.com
porque /
no es un carácter de palabra, pero no con http://streamingaudio.itunes.apple.com
porque el g
que precede audio
es un carácter de palabra.
El equivalente POSIX sería:
grep -E '(^[^[:alnum:]_])audio\.itunes\.apple\.com([^[:alnum:]_]|$)'
O con BRE:
grep -x '\(.*[^[:alnum:]_]\)\{0,1\}audio\.itunes\.apple\.com\([^[:alnum:]_].*\)\{0,1\}'
Algunas grep
implementaciones, incluida GNU, grep
admiten un \<
operador de expresión regular que coincide en la transición entre una palabra y una palabra (Solaris grep
tiene \<
la misma restricción adicional que la -w
anterior). Entonces puedes usar:
grep '\<audio\.itunes\.apple\.com'
con esas grep
implementaciones.
Respuesta2
Utilice -v, --invert-match
Invierta el sentido de coincidencia para seleccionar líneas que no coinciden. (-v lo especifica POSIX).