12 Ejemplos prácticos del comando Linux GREP

12 Ejemplos prácticos del comando Linux GREP

¿Alguna vez ha sido confrontado con la tarea de buscar una cadena o patrón en particular en un archivo? Pero no tiene idea de dónde comenzar a buscar? Bueno, entonces, aquí está grep al rescate!

grep es un poderoso buscador de patrones de archivos que viene equipado en cada distribución de Linux. Si por alguna razón, no está instalado en su sistema, puede instalarlo fácilmente a través de su administrador de paquetes como se muestra.

$ sudo apt instalación grep [en Debian, Ubuntu y Mint] $ sudo yum instalación grep [en Rhel/Centos/Fedora y Rocky Linux/Almalinux] $ sudo emerge -a sys -apps/grep [on Gentoo Linux] $ sudo apk agregar grep [en Alpine Linux] $ sudo Pacman -S Grep [en Arch Linux] $ sudo zypper instalación grep [en Usura de apertura] 

He descubierto que la forma más fácil de mojar los pies con el comando GREP es simplemente sumergirme y usar algunos ejemplos del mundo real.

1. Buscar y encontrar archivos en Linux

Digamos que acaba de instalar una copia nueva del nuevo Ubuntu en tu máquina y que vas a dar Pitón Scripting un tiro.

Has estado recorriendo la web buscando tutoriales, pero ves que hay dos versiones diferentes de Pitón en uso, y no sabe qué versión de Python está instalada en Ubuntu por el instalador, o si instaló algún módulo.

Simplemente ejecute el siguiente comando dpkg con grep como se muestra:

# dpkg -l | Grep -i Python
Encontrar archivos con comando GREP
II libpython3-stdlib: amd64 3.8.2-0ubuntu2 AMD64 Lenguaje orientado a objetos de alto nivel interactivo (versión Python3 predeterminada) II libpython3.8: AMD64 3.8.10-0ubuntu1 ~ 20.04.5 AMD64 Biblioteca de tiempo de ejecución de Python compartido (versión 3.8) II libpython3.8-Minimal: AMD64 3.8.10-0ubuntu1 ~ 20.04.5 AMD64 subconjunto mínimo del lenguaje Python (versión 3.8) II libpython3.8-Stdlib: AMD64 3.8.10-0ubuntu1 ~ 20.04.5 AMD64 Lenguaje interactivo de alto nivel orientado a objetos (Biblioteca estándar, versión 3.8) II Python-Act-Common 2.0.0ubuntu0.20.04.8 Toda la interfaz de Python a Libapt-PKG (Locales) II Python3 3.8.2-0ubuntu2 AMD64 Lenguaje orientado a objetos de alto nivel interactivo (versión Python3 predeterminada) II Python3-Inport 2.20.11-0ubuntu27.24 All Python 3 Biblioteca para Apport Crash Report Handling II Python3-SAPT 2.0.0ubuntu0.20.04.8 AMD64 PYTHON 3 Interfaz a Libapt-Pkg II Python3-Actdaemon 1.1.1+BZR982-0ubuntu32.3 Todos los módulos de Python 3 para el servidor y el cliente de Aptdaemon II Python3-aptdaemon.gtk3widgets 1.1.1+BZR982-0ubuntu32.3 todos los widgets de Python 3 GTK+ 3 para ejecutar un cliente Aptdaemon II Python3-Blinker 1.4+DFSG1-0.3ubuntu1 Todos los rápidos y simples objeto a objeto y transmisión de la biblioteca de señalización II Python3-Brlapi: AMD64 6.0+DFSG -4UBUNTU6 AMD64 Acceso de pantalla Braille a través de Brltty - Python3 Bindings .. 

Primero, corrimos dpkg -l, que listas instaladas *.debutante Paquetes en su sistema. En segundo lugar, tuvimos esa salida a Grep -i Python, que simplemente dice "ir a Grep y filtrar y devolver todo con 'pitón' en eso."

El -i La opción está ahí para ignorar el caso, como grep es sensible a la caja. Utilizando el -i La opción es un buen hábito de entrar a menos que, por supuesto, esté tratando de obtener una búsqueda más específica.

2. Buscar y filtrar archivos en Linux

El grep También se puede usar para buscar y filtrar dentro de archivos individuales o múltiples archivos. Tomemos este escenario:

Estás teniendo algunos problemas con tu Servidor web de Apache, Y te has comunicado con uno de los muchos foros increíbles en la red pidiendo ayuda.

El amable alma que te responde te ha pedido que publiques el contenido de tu /etc/apache2/apache2.confusión archivo. ¿No sería más fácil para ti, el tipo que te ayude y todos los que lo lean si pudieras eliminar todas las líneas comentadas?? Bien tu puedes! Solo ejecuta esto:

# grep -v ^\#/etc/apache2/apache2.conf | grep . 

El -V Opción dice grep para invertir su salida, lo que significa que en lugar de imprimir líneas coincidentes, haga lo contrario e imprima todas las líneas que no coinciden con la expresión, en este caso, el # líneas comentadas.

Tenga en cuenta que también usamos grep . al final para ocultar la salida de todas las líneas vacías. De esta manera solo vemos la configuración de la configuración en nuestro terminal.

Imprimir contenido del archivo excluyendo comentarios y líneas en blanco
DefaultRuntimeDir $APACHE_RUN_DIR PidFile $APACHE_PID_FILE Timeout 300 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5 User $APACHE_RUN_USER Group $APACHE_RUN_GROUP HostnameLookups Off ErrorLog $APACHE_LOG_DIR/error.log Loglevel Warn incluido Mods-Mods-habilitado/*.Cargar Mods de inclusión Actualización habilitada/*.Conf incluye puertos.opciones de conf stissymlinks Ellowoverride Ninguno requiere todos los denegados  

3. Encuentra todos .archivos mp3 en Linux

El grep puede ser muy útil para filtrar desde stdout. Por ejemplo, digamos que tiene una carpeta completa llena de archivos de música en un montón de formatos diferentes.

Quieres encontrar todo el *.mp3 Archivos del artista Jay Z, Pero no quieres ninguna de las pistas remezcladas. Usando un Buscar comando con un par de grep Las tuberías harán el truco:

# encontrar . -nombre "*.MP3 ”| Grep -i Jayz | GREP -VI "Remix" 

En este ejemplo, estamos usando encontrar para imprimir todos los archivos con un *.mp3 Extensión, tuviéndolo para Grep -i Para filtrar e imprimir todos los archivos con el nombre "Jay Z"Y luego otra tubería para grep -vi que filtra y no imprime todos los nombres de archivo con la cadena (en cualquier caso) "remezclar".

[También puede gustar: 35 ejemplos prácticos del comando Find Linux]

4. Muestra el número de líneas antes o después de la cadena de búsqueda

Otra par de opciones son las -A y -B conmutadores, que muestran la línea coincidente y el número de líneas que vienen antes o después de la cadena de búsqueda.

Si bien la página del hombre da una explicación más detallada, me parece más fácil recordar las opciones como -A = después, y -B = antes:

# ifconfig | GREP -A 4 INET # ifconfig | GREP -B 2 UP 
Imprimir número de líneas antes y después de la cadena

5. Imprime el número de líneas alrededor del partido

Los grep -C La opción es similar, pero en lugar de imprimir las líneas que vienen antes o después de la cadena, imprime las líneas en cualquier dirección:

# ifconfig | GREP -C 2 LO TX Errores 0 Dropped 0 Overns 0 Carrier 0 Colisiones 0 LO: Flags = 73 MTU 65536 INET 127.0.0.1 Masca de Net 255.0.0.0 inet6 :: 1 prefixlen 128 scopeid 0x10 bucle txqueuelen 1000 (bucle de bucle local) paquetes rx 15314 bytes 1593769 (1.5 MB) Errores RX 0 Dropped 0 Excelentes 0 Frame 0 

6. Cuenta el número de partidos

Similar a la tubería a grep Cadena al recuento de palabras (comando wc) La opción incorporada de GREP puede realizar lo mismo para usted:

# ifconfig | GREP -C INET6

7. Buscar archivos por cadena dada en Linux

El -norte opción para grep es muy útil al depurar archivos durante los errores de compilación. Muestra el número de línea en el archivo de la cadena de búsqueda dada:

# Configuración "principal" de GREP -N.py

8. Busque una cadena recursivamente en todos los directorios

Si desea buscar una cadena en el directorio actual junto con todos los subdirectorios, puede especificar el -riñonal Opción para buscar recursivamente:

# GREP -R "Función" * 

9. Buscar todo el patrón

Pasando el -w Opción para buscar en las búsquedas de todo el patrón que está en la cadena. Por ejemplo, usando:

# ifconfig | Grep -W "Running"

Imprimirá la línea que contiene el patrón en cotizaciones. Por otro lado, si lo intentas:

# ifconfig | Grep -W "Run"
Encuentra todo el patrón

No se devolverá nada ya que no estamos buscando un patrón, sino una palabra completa.

10. Buscar una cadena en archivos gzipped

Mereciendo alguna mención son los derivados de Grep. El primero es zgrep, que, similar a zafa, es para usar en gzipped archivos. Se necesitan las mismas opciones que grep y se usa de la misma manera:

# ZGREP -I Error/var/log/syslog.2.GZ 
Cadena de búsqueda en archivos gzipped

11. Haga coincidir las expresiones regulares en los archivos

El comando EGREP es otro derivado que representa "Expresión regular global extendida". Reconoce a los metanicadores de expresión adicional como en + ? | y ().

[También le puede gustar: ¿Cuál es la diferencia entre Grep, Egrep y FGrep en Linux?? ]

municipal es muy útil para buscar archivos fuente y otras piezas de código, en caso de que surja la necesidad. Se puede invocar de regularidad grep al especificar el -mi opción.

# Grep -E 

12. Buscar una cadena de patrón fijo

El fgrep Busca un archivo o lista de archivos para una cadena de patrón fijo. Es lo mismo que grep -f. Una forma común de usar fgrep es pasar un archivo de patrones:

# fgrep -f file_full_of_patterns.txt file_to_search.TXT

Este es solo un punto de partida con grep, Pero como probablemente pueda ver, es invaluable para una variedad de propósitos. Aparte de los comandos simples de una línea que hemos implementado, grep se puede usar para escribir poderoso cron trabajos y robusto Scripts de shell, para comenzar.

[También puede gustar: 11 comandos avanzados de Linux 'Grep' en clases de caracteres y expresiones de soporte]

Sea creativo, experimente con las opciones en el página del hombre, Y se le ocurre Expresiones de GREP que sirven a sus propios propósitos!