El comando grep, los pipes y las expresiones regulares: Uso básico

El comando grep, los pipes y las expresiones regulares: Uso básico

¿Cómo realizar búsquedas dentro de archivos de texto en Linux?

El comando grep permite realizar búsquedas dentro del texto y encontrar las coincidencias. En su forma mas básica el comando requiere dos parámetros, el patrón a buscar y el archivo en el cual realizar la búsqueda.

grep patron archivo.txt

El resultado arrojado dependerá de si existe el patrón de búsqueda o no dentro del archivo. Un detalle a tomar en cuenta es que grep es por default sensitive, es decir que hace distinción entre mayúsculas y minúsculas, si se requiere hacer una búsqueda insensitive (que no haga distinción entre mayúsculas y minúsculas) entonces se usa el parámetro -i.

grep -i patron archivo.txt

¿Qué son las pipes de Linux?

Al igual que el direccionador “>” que nos permite enviar la salida de un comando hacia un archivo, existe en Linux el concepto de pipes, los pipes permiten direccionar la salida de un comando a otro comando.

Por ejemplo si deseamos saber cuantas veces aparece una determinada palabra podemos combinar el comando grep con el comando wc.

grep -io textoabuscar archivo.txt | wc -l

¿Qué son las expresiones regulares?

Las expresiones regulares son patrones que nos permiten introducir combinaciones de caracteres para refinar nuestras búsquedas.

Supongamos que en lugar de buscar las líneas que contienen un texto deseamos buscar las líneas que inicien con este texto. En una expresión regular el caractér ^ representa al inicio del texto.

grep '^texto' archivo.txt | wc -l

Ahora supongamos que el texto debe ir al final de la línea. Para ello usamos el caractér $ que quiere decir al final del texto.

grep 'texto$' archivo.txt | wc -l

Hay que tomar en cuenta que si bien cuando usamos wildcard el * representa cualquier cosa, en una expresión regular tiene otro significado, este quiere decir cero o mas veces. Por ejemplo si quisiéramos definir una expresión que utilice 0 o mas números utilizaríamos la expresión [0-9]*.

Las expresiones regulares implican un estudio mucho mas profundo, se sugiere utilice información adicional para familiarizarse con el tema.