Uso del comando Grep con ejemplos

Uso del comando Grep con ejemplos.

El comando grep (impresión de la expresión regular global), se usa para buscar cadenas de texto y expresiones regulares línea por línea que coincidan con un patrón definido en uno o más archivos.

En este artículo, veremos con ejemplos, como utilizar eficazmente el comando grep en linux, de la misma forma trataremos sus variantes: egrep y fgrep.

Uso del comando Grep con ejemplos 1

 

El comando Grep con ejemplos

Buscar en un archivo especifico:

Buscamos la linea que contiene ‘DB_USER‘ en el archivo de configuración «wp-config.php» de WordPress.

grep 'DB_USER' wp-config.php

ejemplo de salida…

define(‘DB_USER’, ‘usuariobasededatos’);

 

Buscar en todos los archivos:

Buscamos en el directorio «wp-admin» y solo en los archivos «php«, las lineas que incluyan el texto ‘str_replace‘.

grep "str_replace" admin*.php

ejemplo de salida…

admin-ajax.php: add_action( ‘wp_ajax_’ . $_GET[‘action’], ‘wp_ajax_’ . str_replace( ‘-‘, ‘_’, $_GET[‘action’] ), 1 );
admin-ajax.php: add_action( ‘wp_ajax_’ . $_POST[‘action’], ‘wp_ajax_’ . str_replace( ‘-‘, ‘_’, $_POST[‘action’] ), 1 );
admin-header.php:$admin_body_class .= ‘ branch-‘ . str_replace( array( ‘.’, ‘,’ ), ‘-‘, floatval( $wp_version ) );
admin-header.php:$admin_body_class .= ‘ version-‘ . str_replace( ‘.’, ‘-‘, preg_replace( ‘/^([.0-9]+).*/’, ‘$1’, $wp_version ) );
admin-header.php:$admin_body_class .= ‘ locale-‘ . sanitize_html_class( strtolower( str_replace( ‘_’, ‘-‘, get_locale() ) ) );

 

Buscar en todos los archivos identificando la linea:

Buscamos en el directorio «wp-admin» y solo en los archivos «php«, las lineas que incluyan el texto ‘str_replace‘. Este comando es similar al anterior, con la particularidad que nos indica el numero de linea donde se encuentra la expresión.

grep -n "str_replace" admin*.php

ejemplo de salida…

admin-ajax.php:73: add_action( ‘wp_ajax_’ . $_GET[‘action’], ‘wp_ajax_’ . str_replace( ‘-‘, ‘_’, $_GET[‘action’] ), 1 );
admin-ajax.php:76: add_action( ‘wp_ajax_’ . $_POST[‘action’], ‘wp_ajax_’ . str_replace( ‘-‘, ‘_’, $_POST[‘action’] ), 1 );
admin-header.php:157:$admin_body_class .= ‘ branch-‘ . str_replace( array( ‘.’, ‘,’ ), ‘-‘, floatval( $wp_version ) );
admin-header.php:158:$admin_body_class .= ‘ version-‘ . str_replace( ‘.’, ‘-‘, preg_replace( ‘/^([.0-9]+).*/’, ‘$1’, $wp_version ) );
admin-header.php:160:$admin_body_class .= ‘ locale-‘ . sanitize_html_class( strtolower( str_replace( ‘_’, ‘-‘, get_locale() ) ) );

 

Buscar archivos recursivamente que contengan un texto especifico:

Este comando es similar a los anteriores, pero solo nos imprimirá en pantalla el nombre de los archivos que contienen ‘str_replace‘.

grep -ril "str_replace" admin*.php

ejemplo de salida…

admin-ajax.php
admin-header.php

 

El comando grep permite la combinación con otros comandos, vemos algunos ejemplos.

 

Buscar archivos con un texto definido en la carpeta actual:

Hacemos una búsqueda de los archivos «php» en la carpeta donde nos encontremos en ese momento, que contengan el texto ‘eval‘. Combinamos «grep» con «find«.

find . -name '*.php' -exec grep -l 'eval' {} \;

ejemplo de salida…

./wp-admin/includes/image.php
./wp-admin/includes/class-wp-upgrader.php
./wp-admin/includes/class-pclzip.php
./wp-admin/includes/media.php
./wp-admin/includes/update-core.php
./wp-admin/includes/ajax-actions.php
./wp-admin/includes/class-wp-automatic-updater.php
./wp-admin/includes/class-wp-posts-list-table.php
./wp-admin/user-edit.php
./wp-admin/edit-tag-form.php

 

Listar procesos de Apache:

Combinando «grep» con «ps aux«, listamos los procesos de Apache.

ps aux | grep http

ejemplo de salida…

root         19357 0.0 0.1 433928 22380 ? Ss mar05 0:01 /usr/sbin/httpd -DFOREGROUND
apache    25539 0.0 0.0 276728 9140 ? S 03:37 0:00 /usr/sbin/httpd -DFOREGROUND
apache    25541 0.0 0.0 436012 11092 ? S 03:37 0:00 /usr/sbin/httpd -DFOREGROUND
apache    25542 0.2 0.4 2361240 69560 ? Sl 03:37 0:29 /usr/sbin/httpd -DFOREGROUND
apache    25543 0.0 0.4 2361240 70536 ? Sl 03:37 0:09 /usr/sbin/httpd -DFOREGROUND
apache    25546 0.0 0.4 2361240 67648 ? Sl 03:37 0:09 /usr/sbin/httpd -DFOREGROUND
apache    27003 0.0 0.4 2361240 72088 ? Sl 03:40 0:11 /usr/sbin/httpd -DFOREGROUND
root         56885 0.0 0.0 112732 980 pts/0 S+ 06:57 0:00 grep –color=auto http

 

Ver el socket del ID de un proceso:

En este caso probaremos el «id 25546».

lsof -p 25546 | grep -Ei 'cwd|unix|sock'

ejemplo de salida…

httpd 25546 apache cwd DIR 8,2 4096 2 /
httpd 25546 apache mem REG 8,2 91528 23729450 /usr/lib64/php-zts/modules/sockets.so
httpd 25546 apache mem REG 8,2 15392 23205555 /usr/lib64/httpd/modules/mod_unixd.so
httpd 25546 apache 1u unix 0xffff8bb764960000 0t0 5922520 socket
httpd 25546 apache 3u sock 0,7 0t0 5923227 protocol: TCP
httpd 25546 apache 5u sock 0,7 0t0 5923235 protocol: TCP

 

Ver el numero de conexiones a un puerto:

Combinando»grep» con el comando «netstat» podemos imprimir en pantalla el numero de conexiones de un puerto (en el ejemplo el 80).

netstat -an | grep :80 |wc -l

ejemplo de salida…

1827

 

Eliminar mensajes congelados de Exim:

Eliminamos todos los mensajes congelados de la cola de correo de Exim.

exim -bpr | grep frozen | awk {'print $3'} | xargs exim -Mrm

ejemplo de salida…

Message 1dChLr-0000y6-D1 has been removed
Message 1dPinU-0000Ld-S3 has been removed
Message 1dPaox-0000OC-A8 has been removed

 

Buscar archivos con un patrón de texto:

Buscamos archivos que contengan el patrón «sololinux«.

find . -iname "*.txt" -exec grep -l "sololinux" {} +

Con el comando «egrep» podemos buscar varios patrones a la vez (en el ejemplo buscamos sololinux y adminserver).
egrep 'sololinux|adminserver' /etc/yum.conf

ejemplo…

sololinux=/var/cache/yum/$basearch/$releasever
adminserver=lm_sensors*

Por ultimo usaremos el comando «fgrep«, que buscara un archivo o lista de archivos de una cadena de patrón fija.

fgrep 'sololinuxes' /etc/yum.conf

ejemplo…
sololinuxes=/var/cache/yum/$basearch/$releasever

 

Damos por concluido el articulo «Uso del comando Grep con ejemplos«, compártelo.

 

Agregar comentario