Você está na página 1de 6

Grep: Aprendiendo Shell Scripting

usando el comando de terminal grep


https://blog.desdelinux.net/aprendiendo-shell-scripting-grep/?
utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+desdelinuxweb+
%28Desde+Linux%29

Aprendiendo Shell Scripting usando el comando de terminal: grep

El comando “grep” en los Sistemas Operativos Libres del tipo GNU/Linux


es un comando muy valioso y útil.Su nombre proviene de la frase en ingles:
“Global Regular Expression Print” y el mismo es utilizado para realizar la tarea de
hallar, coincidir y visualizar un patrón de búsqueda o una expresión regular de un
(1) archivo o varios archivos de texto.
Básicamente el comando “grep” busca el patrón señalado en los
parámetros de la orden de comando, e imprime los resultados obtenidos
siguiendo las indicaciones los parámetros de la orden de comando, los
cuales pueden ser: la Pantalla o un Archivo de salida.

Introducción al comando “grep”


Ya en otras publicaciones anteriores del mismo blog, tal como esta “Algunos
comandos básicos sobre …” hemos comentado sobre el uso básico de este
grandioso comando, pero en esta publicación veremos un uso más
intermedio y avanzado del comando “grep” dentro de funcionales y
útiles ordenes de comandos que nos pueden facilitar ciertas labores
reales dentro de nuestros script de shell o directamente sobre el terminal para
lograr un resultado más inmediato sobre una tarea especifica a realizar.

Ejemplos Prácticos
Visualizar nuestra posición/ubicación
Imprimir el contenido de nuestro directorio actual mediante un árbol de directorio
gráfico:
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e
's/-/|/'
Ejemplo:

Generar una contraseña aleatoria de 30 caracteres de


longitud
Generar cadenas aleatorias dentro de /dev/urandom para luego seleccionar y
visualizar una (1) sola usando un filtrado con el comando “grep” para solo
caracteres alfanuméricos, con la condición del tamaño de los primeros 30
caracteres, eliminando todos los avances de línea.
strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n'; echo

Ejemplo:

Generar un resumen gráfico de conexiones


Visualizar en forma gráfica (tabla) y resumida el numero de conexiones de red
internas y externas detectadas por el comando “netstat” de un host en un
determinado momento.
netstat -an | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | sort |
uniq -c | awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++)
{printf("*")}; print "" }'

Ejemplo:
También puede usarse para generar una tabla de resumen de los números de
conexiones por tipo de ellas, tal como se muestra a continuación:
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c

Ejemplo:

Buscar una cadena (patrón) dentro de una ruta


Ubicar y mostrar todas las coincidencias de un patrón en los nombres de archivos
o contenido de los mismos. El uso de los parámetros para lograr esto son: -R
(Recurrencia para los subdirectorios), -n (Mostrar los números de línea de las
coincidencias), -i (Ignorar mayúsculas y minúsculas), -s (Suprimir mensajes de “no
existe” y “no se puede leer”), -I (Ignorar los archivos binarios en la búsqueda).
grep -RnisI *
También puede usarse de una forma más avanzada si es usado dentro de una
orden de comando con el comando “find” para ubicar un patrón dentro de un tipo
de archivo predefinido. tal como se muestra a continuación:
find /opt/MilagrOS -name "*.txt" -exec grep -RnisI "MilagrOS" {} \;

Conocer la cantidad de data en Memoria RAM


Esto es útil para saber con exactitud cuanta data (información) está esperando
ser escrita en el disco duro y se requiere forzar el reinicio o apagado de un
equipo.
grep ^Dirty /proc/meminfo
Conocer nuestra Dirección IP WAN
Siempre es muy útil conocer nuestra IP WAN de forma automática desde el
terminal para luego pasar ese parámetro a otra tarea automatizada. Este ejemplo
hace uso del servicio DynDNS para obtenerla.
curl -s http://checkip.dyndns.org/ | grep -o "[[:digit:].]\+"

Listar los equipos conectados a un segmento de Red


Usando un ciclo for con el comando “ping” y filtrando el resultado con el comando
“grep” podemos validar nuestros equipos conectados a la red con el servicio ping
habilitado sin necesidad de tener la herramienta NMap.
for i in {1..10}; do ping -c 1 -W 1 192.168.0.$i | grep 'from'; done

Ejemplo:

Para listar el campo de la dirección IP rastreada pueden hacer un uso más


avanzado de esta linea, filtrando los resultados del comando “grep” usando los
comandos “awk” y “cut”, tal como se muestra a continuación:
for i in {100..110}; do ping -c 1 -W 1 192.168.0.$i | grep 'from'; done | awk
'{ print $4 }' | cut -d ":" -f 1

Ejemplo:
Estos ejemplos de lineas de comando usando el comando grep. Y les sirvan para
ser utilizadas directamente desde consola o indirectamente mediante su inserción
en algún script (tarea automatizada).
En la siguiente publicación sobre Shell Scripting exploraremos otros
comandos.
Si quieres aprender un poco más sobre el comando “grep” visita este
enlace “Wiki DEBIAN” y si deseas aprender más sobre Shell Scripting en
nuestro propio Blog, puedes darle un vistazo a nuestras otras publicaciones
sobre el tema, haciendo clic aquí: Scripting en DesdeLinux.

Você também pode gostar