También puede usar el comando grep para buscar destinos definidos como patrón usando expresiones regulares. Las expresiones regulares están formadas por letras y números, así como por caracteres que tienen un significado especial para grep. Dichos caracteres especiales, llamados metacaracteres, también tienen un significado especial para el sistema y tienen que ir entre comillas o entre paréntesis precedidos por una barra inversa. Siempre que use una expresión regular de grep tras el indicador de comando, escríbala entre comillas, o precedida de metacaracteres de escape (como & ! . * $ ? y \) con una barra inversa (\).
$ grep '^b' list |
busca cualquier línea del archivo list que empiece por "b."
$ grep 'b$' list |
muestra cualquier línea en la que "b" sea su último carácter. Y el comando:
$ grep '^b$' list |
muestra cualquier línea de list en la que "b" es el único carácter de la línea.
$ grep 'an.' list |
busca cualquier cadena de tres caracteres que contenga "an" como sus dos primeros, incluyendo "antes" "planta", "finanzas" y "plan" (ya que los espacios también se tienen en cuenta).
Cuando un asterisco (*) va detrás de un carácter, grep lo interpreta como "cero o más apariciones de dicho carácter". Cuando el asterisco va detrás de una expresión regular, grep lo interpreta como "cero o más apariciones de caracteres que concuerden con el patrón."
Como incluye cero apariciones, el uso del asterisco no es nada intuitivo. Suponga que desea encontrar todas las letras que contengan una "qu". Si escribe:
$ grep 'qu*' list |
funcionará según lo esperaba. Sin embargo, si quiere buscar todas las palabras que contengan la letra "n", deberá escribir:
$ grep 'nn*' list |
Si quiere buscar todas las palabras que contengan el modelo "nn", deberá introducir:
$ grep 'nnn*' list |
Puede intentar ver lo que ocurre al contrario.
Para concordar cero o más apariciones de cualquier carácter de list, escriba:
$ grep .* list |