<Anterior | Contenido | Siguiente>
grep
El programa principal que usaremos para trabajar con expresiones regulares es nuestro viejo amigo, grep. El nombre "grep" en realidad se deriva de la frase "impresión de expresión regular global", por lo que podemos ver que grep tiene algo que ver con las expresiones regulares. En esencia, grep busca archivos de texto para el texto de ocurrencia que coincida con una expresión regular especificada y genera cualquier línea que contenga una coincidencia con la salida estándar.
Hasta ahora, hemos utilizado grep con cadenas fijas, así:
[yo @ linuxbox ~] $ ls / usr / bin | cremallera grep
[yo @ linuxbox ~] $ ls / usr / bin | cremallera grep
Esto listará todos los archivos en el / usr / bin directorio cuyos nombres contienen la subcadena "zip".
La grep El programa acepta opciones y argumentos de esta manera:
grep [opciones] expresiones regulares [archivo...]
donde expresiones regulares es una expresión regular.
A continuación se muestra una lista de los grep opciones:
Tabla 19-1: Opciones de grep
Opción Descripción
Opción Descripción
-i Ignorar caso. No distinga entre mayúsculas y minúsculas. También se puede especificar --ignorar caso.
-v Invertir partido. Normalmente, grep imprime líneas que contienen una coincidencia.
Esta opción provoca grep para imprimir cada línea que no contenga una coincidencia. También se puede especificar --invertir partido.
-c Imprima el número de coincidencias (o no coincidencias si el -v también se especifica la opción) en lugar de las líneas en sí. También se puede especificar --contar.
-l Imprima el nombre de cada archivo que contenga una coincidencia en lugar de las líneas en sí. También se puede especificar --archivos-con-coincidencias.
-L Como la opción -l, pero imprime solo los nombres de los archivos que no contienen coincidencias. También se puede especificar --files-without- match.
-n Prefije cada línea coincidente con el número de la línea dentro del archivo. También se puede especificar --line-number.
-h Para búsquedas de varios archivos, suprima la salida de nombres de archivo. También se puede especificar --no-nombre de archivo.
Para explorar más a fondo grep, creemos algunos archivos de texto para buscar:
grep
[yo @ linuxbox ~] $ ls / bin> dirlist-bin.txt [yo @ linuxbox ~] $ ls / usr / bin> dirlist-usr-bin.txt [yo @ linuxbox ~] $ ls / sbin> dirlist-sbin.txt [yo @ linuxbox ~] $ ls / usr / sbin> dirlist-usr-sbin.txt [yo @ linuxbox ~] $ ls dirlist * .txt
lista de directorios-bin.txt lista de directorios-sbin.txt lista de directorios-usr-sbin.txt lista de directorios-usr-bin.txt
[yo @ linuxbox ~] $ ls / bin> dirlist-bin.txt [yo @ linuxbox ~] $ ls / usr / bin> dirlist-usr-bin.txt [yo @ linuxbox ~] $ ls / sbin> dirlist-sbin.txt [yo @ linuxbox ~] $ ls / usr / sbin> dirlist-usr-sbin.txt [yo @ linuxbox ~] $ ls dirlist * .txt
lista de directorios-bin.txt lista de directorios-sbin.txt lista de directorios-usr-sbin.txt lista de directorios-usr-bin.txt
Podemos realizar una búsqueda simple de nuestra lista de archivos como esta:
[yo @ linuxbox ~] $ grep bzip dirlist * .txt
dirlist-bin.txt: bzip2 dirlist-bin.txt: bzip2recover
[yo @ linuxbox ~] $ grep bzip dirlist * .txt
dirlist-bin.txt: bzip2 dirlist-bin.txt: bzip2recover
En este ejemplo, grep busca la cadena en todos los archivos enumerados bzip y encuentra dos coincidencias, ambas en el archivo lista-dirección-bin.txt. Si solo estuviéramos interesados en la lista de archivos que contienen coincidencias en lugar de las coincidencias en sí, podríamos especificar el -l opción:
[yo @ linuxbox ~] $ grep -l bzip dirlist * .txt
lista-dirección-bin.txt
[yo @ linuxbox ~] $ grep -l bzip dirlist * .txt
lista-dirección-bin.txt
Por el contrario, si solo quisiéramos ver una lista de los archivos que no contienen una coincidencia, podríamos hacer esto:
[yo @ linuxbox ~] $ grep -L bzip dirlist * .txt
lista de direcciones-sbin.txt lista de direcciones-usr-bin.txt lista de direcciones-usr-sbin.txt
[yo @ linuxbox ~] $ grep -L bzip dirlist * .txt
lista de direcciones-sbin.txt lista de direcciones-usr-bin.txt lista de direcciones-usr-sbin.txt