Linux comando grep

Grep es un extendido método, caracterizado por su sencillez, que se usa con Linux para buscar o filtrar archivos por cadenas específicas. El comando de Linux sigue una sintaxis uniforme y facilita la búsqueda mediante parámetros definidos.

¿Qué es grep?

Grep es la abreviatura de “búsqueda global para las líneas que encajen con la expresión regular (regular expression en inglés) e imprimirlas (print en inglés). Como el programa está incluido en el paquete esencial de Ubuntu, no es necesario instalarlo por separado. Los comandos grep se utilizan para buscar patrones y cadenas. Esto permite filtrar la información que se busca incluso en archivos de registro de gran tamaño. Es importante que nunca se ejecute grep para los archivos de dispositivos, ya que esto puede conducir a problemas.

¿Cómo se utiliza grep?

La sintaxis básica de grep es la siguiente: “grep [Opciones] Cadena de búsqueda [ARCHIVO]” o, como alternativa, “grep [Opciones] [-e Ejemplo | -f ARCHIVO] [ARCHIVO]”. Un ejemplo sencillo de un comando grep en Linux sería buscar un término específico en el texto de un archivo de código o de registro. Si quieres buscar el término “test” en un archivo llamado ejemplo.txt, introduce lo siguiente en grep: "grep "test" ejemplo.txt". Ahora se mostrarán las líneas correspondientes en este archivo.

Expresiones regulares como fundamento de grep

La base de este proceso son las llamadas “expresiones regulares” en Linux. Estas “expresiones regulares” están disponibles en las variantes básica y extendida; esta última es importante para grep. Las expresiones regulares pueden utilizarse para buscar caracteres individuales o cadenas de caracteres. También es posible identificar una letra o un dígito, aunque forme parte de una cadena de caracteres. En el ejemplo del número “2”, el comando no solo encontraría el “2”, sino también cadenas como “1234”, “y2k” o “number2”.

Hay caracteres en grep que cumplen una función en la búsqueda. Por ejemplo, el signo de dólar “$” encuentra el final de una línea. Estos caracteres pueden buscarse por separado utilizando un comando específico en grep. Para ello, el carácter debe ir precedido de una barra invertida. Si buscas un punto “.” como signo de puntuación en un archivo, puedes hacerlo con la combinación “\.”.

Listas en grep

Las listas de diferentes caracteres, llamadas “expresiones de corchetes”, también pueden filtrarse con grep. Para la lista de caracteres que deben incluirse en la consulta de búsqueda, utiliza dos corchetes “[]”. Por ejemplo, si quieres buscar todas las letras “e” en mayúsculas o minúsculas, utiliza la opción de búsqueda “[Ee]”. Por sí misma, esta entrada encontrará todas las letras “e”. Sin embargo, si la combinas, también puede filtrar palabras o fragmentos de texto con una “e” mayúscula o minúscula. Por ejemplo, si introduces “[Ee]nd” en grep, este no solo encontrará el término “End” en minúscula y mayúscula, sino también fragmentos de texto con una “e” minúscula, como “distend”.

Además, grep te ofrece la posibilidad de excluir ciertos dígitos de una lista durante una búsqueda y solo buscar aquellos que no fueron excluidos de antemano. Para ello, se coloca un “^” delante. “^Ee”, por ejemplo, tiene en cuenta todos los caracteres excepto la “E” y la “e”.

Con la ayuda de algunas listas predefinidas, grep en Linux ahorra pasos. Cada una de estas listas predefinidas se encierra entre corchetes adicionales, es decir, [[:exampleelist:]]. Las listas predefinidas son:

  • [:alnum:]: incluye todos los dígitos [:digit:] y letras [:alpha:]
  • [:alpha:]: incluye todas las letras mayúsculas [:upper:] y minúsculas [:lower:]
  • [:blank:] incluye todos los espacios por barra espaciadora o tabulador
  • [:cntrl:]: incluye todos los caracteres de control
  • [:digit:]: incluye todas las cifras de 0 a 9
  • [:graph:]: incluye todos los caracteres gráficos [:alnum:] y [:punct:]
  • [:lower:]: contiene todas las letras minúsculas
  • [:print:]: incluye todos los caracteres imprimibles [:alnum:], [:punct:] y [:space:]
  • [:punct:]: incluye todos los signos de puntuación y caracteres especiales
  • [:space:]: incluye todos los caracteres que crean un espacio en blanco, como espacios o saltos de línea
  • [:upper:]: contiene todas las letras mayúsculas

Ejemplos de comandos grep útiles

Utilizados correctamente, los comandos grep ayudan a realizar búsquedas en archivos grandes. Existen numerosos parámetros con los que puedes especificar tu búsqueda para que grep realmente solo identifique aquellos caracteres o líneas que necesitas. Estos están marcados con un “-“. He aquí algunos ejemplos útiles:

  • -c: con -c o -count, grep no busca el patrón de búsqueda dado, sino que indica en cuántas líneas se encontró el patrón de búsqueda. El comando grep "grep -c “test” ejemplo.txt" cuenta así en cuántas líneas aparece “test” y te muestra el número.
  • -l: si quieres saber en qué archivo se ha encontrado un determinado término de búsqueda, utiliza la opción “-l” (L minúscula). Con el comando grep “grep -l “test” \N-.txt” puedes consultar todos los archivos que contengan el término o la cadena de caracteres “test”.
  • -i: con -i se ignoran las mayúsculas y minúsculas en la búsqueda. “grep -i “test” ejemplo.txt” muestra así todas las líneas que contienen “test” y “Test”.

Grep está disponible en otras tres variantes

Además de la versión regular de grep, existen otras tres variantes. egrep corresponde en gran medida a grep -E y trata los patrones especificados como expresiones regulares extendidas. fgrep corresponde en gran medida a grep -F y busca específicamente los parámetros de los patrones. Los caracteres que se leen como parte de una expresión regular en otros comandos son interpretados por fgrep en su significado literal sin la función adicional. Los ejemplos incluyen “$”, “*” o “\”. rgrep corresponde a grep -r y también tiene en cuenta los subdirectorios.