Comando Grep en Linux

Grep Command Linux



El comando Grep (impresión de expresión regular global) es la utilidad de línea de comandos de Linux más poderosa y más utilizada. Con Grep, puede buscar información útil especificando un criterio de búsqueda. Busca un patrón de expresión particular en un archivo específico. Cuando encuentra una coincidencia, imprime todas las líneas de un archivo que coincide con el patrón especificado. Resulta útil cuando tiene que filtrar archivos de registro de gran tamaño.

En este artículo, explicaremos el uso de la utilidad grep con diferentes ejemplos. Usaremos Debian 10 para explicar los comandos y métodos mencionados en este artículo.







Instalación de Grep

Grep viene instalado en la mayoría de las distribuciones de Linux. Sin embargo, en caso de que no esté en su sistema, puede instalarlo utilizando el siguiente método en la Terminal:



$sudo apt-get install sujeción

Usando Grep

Aquí está la sintaxis básica del comando grep. Comienza con grep seguido de algunas opciones y criterios de búsqueda y luego termina con el nombre del archivo.



$sujeción [opciones]PATRÓN[EXPEDIENTE...]

Buscar archivos

Para buscar un nombre de archivo en un directorio que contiene una cadena específica, puede usar grep de la siguiente manera:





$ls -los | sujeción -Icuerda

Por ejemplo, para buscar un nombre de archivo que contenga una cadena prueba , el comando sería:

$ls-los| sujeción-Iprueba

Este comando enumera todos los archivos que contienen la cadena prueba .



Buscar una cadena en un archivo

Para buscar una cadena en un archivo en particular, puede usar la siguiente sintaxis de comando:

$sujeciónnombre de archivo de cadena

Por ejemplo, para buscar una cadena prueba en un archivo llamado testfile1 , hemos usado el siguiente comando :

$sujeciónempleado testfile1

La salida anterior ha devuelto la oración del testfile1 que contiene la cuerda empleado .

Busque una cadena en varios archivos

Para buscar una cadena en varios archivos, puede utilizar la siguiente sintaxis de comando:

$sujecióncadena nombrearchivo1 nombrearchivo2

Por ejemplo, para buscar un empleado de cadena en nuestros dos archivos testfile1 y testfile2, hemos utilizado el siguiente comando:

$sujeciónempleado testfile1 testfile2

El comando anterior enumerará todas las líneas que contienen la cadena empleado de ambos archivos testfile1 y testfile2.

También puede utilizar un carácter comodín si todos los nombres de archivo comienzan con el mismo texto.

$sujeciónnombre de archivo de cadena*

Como, si tomamos el ejemplo anterior en el que nuestros nombres de archivo eran testfile1 y testfile2 , el comando sería:

$sujeciónarchivo de prueba del empleado*

Busque una cadena en un archivo ignorando el caso de la cadena

La mayoría de las veces, se ha encontrado con eso cuando busca algo usando grep pero no recibe una salida. Esto sucede debido a una discrepancia entre mayúsculas y minúsculas al buscar una cadena. Como en nuestro ejemplo, si usamos por error Empleado en lugar de empleado , devolverá nil ya que nuestro archivo contiene la cadena empleado en minúsculas.

Puede decirle a grep que ignore el caso de la cadena de búsqueda usando el indicador –i después del grep de la siguiente manera:

$sujeción–I cadena nombre de archivo

Al usar la bandera –i, el comando realizará la búsqueda que no distingue entre mayúsculas y minúsculas y devolverá todas las líneas que contienen la cadena empleado en él sin tener en cuenta las letras están en mayúsculas o minúsculas.

Buscar usando la expresión regular

Si se usa correctamente, la expresión regular es una característica muy efectiva en grep. Con el comando Grep, puede definir una expresión regular con una palabra clave inicial y final. Al hacerlo, no necesitará escribir toda la línea con el comando grep. La siguiente sintaxis se puede utilizar para este propósito.

$sujeciónpalabra clave inicial.*nombre de archivo de palabra clave final

Por ejemplo, para buscar una línea en un archivo llamado testfile1 que comienza con la cadena this y termina con la cadena data, hemos usado el siguiente comando:

$sujeciónesta.*archivo de prueba de datos1

Imprimirá la línea completa desde el testfile1 que contiene la expresión (palabra clave inicial this y datos de la palabra clave final).

Imprime un número particular de líneas después / antes de la cadena de búsqueda

También puede mostrar el número específico de líneas en un archivo antes / después de una coincidencia de cadena junto con la propia cadena coincidente. La siguiente sintaxis se puede utilizar para este propósito:

$sujeción -A <norte>nombre de archivo de cadena

Mostrará N número de líneas después de que la cadena coincida en el archivo especificado, incluida la cadena coincidente.

Por ejemplo, este es nuestro archivo de muestra llamado testfile2 .

El siguiente comando generará la línea coincidente que contiene la cadena empleado , junto con las 2 líneas posteriores.

$sujeción–A2–I empleado testfile2

De manera similar, para mostrar N número de líneas antes de la cadena coincidente en un archivo específico, use la siguiente sintaxis:

$sujeción -B <norte>nombre de archivo de cadena

Para mostrar N número de líneas alrededor de la cadena en un archivo específico, use la siguiente sintaxis:

$sujeción -C <norte>nombre de archivo de cadena

Destacando la búsqueda

Grep imprime líneas coincidentes de forma predeterminada, pero no muestra qué parte de la línea coincide. Si usa la opción –color con grep, mostrará dónde aparecen las cadenas de mecanizado en su archivo. Grep por defecto usa el color rojo para resaltar.

La siguiente sintaxis se puede utilizar para este propósito:

$sujeciónnombre de archivo de cadena--color

Contando el número de partidos

Si desea contar cuántas veces aparece una palabra en particular en un archivo específico, puede usar la opción grep con –c. Devuelve solo el número de coincidencias en lugar de las coincidencias en sí. La siguiente sintaxis se puede utilizar para este propósito:

$sujeción–C cadena nombre de archivo

Este es nuestro archivo de muestra se ve así:

A continuación se muestra un ejemplo de un comando que devolvió el número de veces que la palabra expediente apareció en un archivo llamado testfile3 .

Búsqueda invertida

A veces, desea realizar una búsqueda inversa que muestre todas las líneas excepto las que coinciden con la entrada. Para hacerlo, simplemente use el indicador –v seguido de grep:

$sujeción–V cadena nombre de archivo

Por ejemplo, para mostrar todas las líneas de un archivo testfile3 que no contienen la palabra cuenta en ellos, hemos usado el siguiente comando:

$sujeción–V cuenta testfile3

Usando Grep con otros comandos

Grep también se puede utilizar para filtrar el resultado requerido de la salida de diferentes comandos. Por ejemplo, desde el apt – lista instalada salida del comando, desea encontrar solo los paquetes que se instalaron automáticamente, puede filtrar el resultado usando grep de la siguiente manera:

$apto--instaladolista| sujeciónautomático

De manera similar, lscpu proporciona información detallada sobre la CPU. Si solo está interesado en la información sobre la arquitectura de la CPU, puede filtrarla usando el siguiente comando:

$lscpu| sujeciónArquitectura

En este artículo, hemos descrito algunos ejemplos que le ayudarán a comprender los comandos grep y su uso en diferentes condiciones. Tener un fuerte control sobre el comando grep puede ahorrar mucho tiempo si necesita mirar archivos de registro o configuraciones grandes y leer información útil a través de ellos.