Está en la página 1de 19

Taller comando grep, awk y expresiones regulares

Camilo Alexander Hernández Hernández


Nelson Esteban Escarraga Escobar
Marcos David Heredia Gómez
Kevin Stiven Calderón Orjuela
Estudiantes

Universidad Piloto de Colombia Seccional del Alto Magdalena (SAM)


Área de Sistemas Operativos
Girardot
2019
Taller comando grep, awk y expresiones regulares

Camilo Alexander Hernández Hernández


Nelson Esteban Escarraga Escobar
Marcos David Heredia Gómez
Kevin Stiven Calderón Orjuela
Estudiantes

Edicson Pineda Cadena


Docente

Universidad Piloto de Colombia Seccional del Alto Magdalena (SAM)


Área de Sistemas Operativos
Girardot
2019
Comando grep

En la programación en Linux existen ciertos tipos de herramientas que permiten ejecutar

tareas como búsquedas rápidamente de acuerdo a algunos parámetros. El comando grep es

uno de estas herramientas, sus siglas en inglés (global regular expresions print), que en

español significa impresión de expresiones regulares globales. Con respecto a otros

comandos su funcionalidad y potencialidad es verdaderamente alta, ya que permite realizar

búsqueda de textos dentro de directorios o archivos y luego imprimirlos por consola o

incluso funcionar de tubería para otro comando.

Un ejemplo simple

Un ejemplo claro es la búsqueda de palabras dentro de un archivo, en este caso tenemos un

archivo diccionario.txt en donde se encuentran distintas palabras, si se desea mostrar por

consola todas aquellas palabras que contengan una sub cadena.


Como se demuestra en el ejemplo anterior, el comando grep toma como parámetro la

cadena de texto a buscar e imprime por consola todas aquellas coincidencias que encuentre

y el proceso terminara hasta que el archivo se quede sin líneas. En este caso el comando

grep recorrió cada una de las palabras que se encuentran almacenadas en diccionario.txt y

como resultado encontró 4 coincidencias de texto y los imprimió en consola.

Sintaxis

La sintaxis del comando grep es la siguiente:

Figura. imagen sintaxis comando grep

Fuente:[ CITATION com19 \l 2058 ]

Este esquema de la sintaxis de forma general representa las posibles combinaciones que se

le pueden dar al comando grep, por ejemplo en la parte que dice opciones, van todas

aquellas expresiones regulares o subcomandos con los que se puede combinar el grep, por

ejemplo si repetimos el ejemplo anterior en donde se buscaban todas aquellas palabras que

contuvieran dentro de su estructura la palabra u, el comando grep nos imprimirá por

consola todos los datos que coincidieran, ahora si combinamos el comando grep con el

subcomando –n, el resultado que se imprimirá será el número de línea en el que se

encuentra dicha palabra, a continuación se presenta el pseudocodigo.


Como se muestra en la imagen, en consola aparece la palabra que coincide junto con el

número de línea en el que se encuentra dicha palabra.

Expresiones útiles del comando grep:

Grep –vn u diccionario.txt

En este caso por consola se imprimirán el número de línea de todas aquellas palabras que

no tengan dentro de su estructura la letra “u”.

grep -c “u” diccionario.txt


La opción -c t grep para reprimir la impresión de líneas coincidentes y mostrar solo el

número de líneas que coinciden con la consulta.

grep -l “u” diccionario.txt

La opción -l imprime solo los nombres de archivo de los archivos de la consulta que

tienen líneas que coinciden con la cadena de búsqueda. Esto es útil si está buscando a

través de varios archivos.

grep -i “u” diccionario.txt


una opción muy útil en grep es la combinación grep –i en donde se busca coincidencias

sin distinguir entre mayúsculas y minúsculas. Esta opción tratará mayúsculas y minúsculas

como equivalentes al hacer coincidir la cadena de búsqueda.

Búsqueda mediante recursividad:

El comando grep también puede ser programado para que pueda realizar búsquedas de

texto de forma recursiva mediante la expresión -R, es decir a partir de una ruta empezara

a recorrer todos los subdirectorios y archivos en búsqueda de coincidencias.


Expresiones regulares

Una expresión regular (regex), es una forma compacta de describir patrones complejos en

el texto. Con grep, puede usarlos para buscar patrones. Otras herramientas le permiten

utilizar expresiones regulares para modificar el texto de maneras complejas. Por ejemplo,

si se desea buscar las palabras del archivo diccionario.txt que solamente empiecen por la

letra a, se debe hacer uso de expresiones regulares para poder realizarlo, a continuación,

se presenta un ejemplo:

Puntos de Anclaje: además de indica que, y cuantas veces queremos que un patrón de

texto se repita, los puntos de anclaje tienen la función de determinar en donde queremos

que aparezcan dichas cadenas de textos, los más utilizados son:


Símbolo Funció n

“^” Inicio de línea

“$” Fin de línea

“<” Principio de palabra

“>” Fin de palabra

“\b” Límite de la palabra

Otro ejemplo es buscar todas aquellas palabras que terminen en o, para esto se realizó el

siguiente comando.

Como se puede observar, la sintaxis de esta condición es la palabra o letra y luego el

signo pesos el cual hace referencia al final de la expresión.

Un último ejemplo de una expresión regular podría ser mostrar todas aquellas cadenas

que empiecen por un número y que terminen por una letra, a continuación, se especifica

el código.
Se debe tener en cuenta que cuando se ejecutan expresiones regulares extendidas, se debe

realizar mediante la expresión –E, la cual hace referencia a extendida.

Carácter barra inclinada:

Los símbolos \ < y \> coinciden respectivamente con la cadena vacía al principio y al

final de una palabra. El símbolo \ b coincide con la cadena vacía en el borde de una

palabra, y \ B coincide con la cadena vacía siempre que no esté en el borde de una

palabra.

Repeticiones

Una expresión regular puede ser seguida por uno de varios operadores de repetición,

permite seleccionar cuantas veces y que caracteres deben repetirse en un patrón de texto:
Figura. tabla. Repetición de expresiones
? El elemento anterior es opcional y coincide como máximo una
vez.
** El elemento anterior coincidirá cero o más veces.

+ El elemento anterior se combinará una o más veces.

{ n } El elemento anterior coincide exactamente n veces.

{ n ,} El elemento anterior se corresponde n o más veces.

{ n ,  El elemento anterior se corresponde al menos n veces, pero no


m } más de m veces.
Fuente:[ CITATION com19 \l 2058 ]

Comando Sed:

Otra forma de usar expresiones regulares es mediante el comando sed. Este es más

adecuado para reemplazar texto, pero también puede usarse para hacer búsquedas. La

sintaxis para ello sería así:


Como se muestra en la imagen anterior el comando sed cambio en todas las palabras la

letra a por la A, esto con ayuda del parámetro s que significa sustitución.

Al igual que en el ejemplo anterior se puede realizar varias variantes de sustitución las

más usadas son:

Variable de sustitució n Significado

sed 's/Microsoft Windows/GNU Linux/2' Sustituye la segunda coincidencia por la


fichero.txt nueva cadena de texto

sed 's/Microsoft Windows/GNU Linux/g' Sustituye todas las coincidencias de texto


fichero.txt por la nueva cadena.

$sed 's/Microsoft Windows/GNU Duplicar la línea reemplazada por el


Linux/p' fichero.txt indicador.

$ sed 'nd' fichero.txt Borra el nú mero de línea de un fichero


AWK

Un lenguaje de escaneo y procesamiento de patrones de texto, creado por Aho, Weinberger

& Kernighan (de ahí el nombre). Puede ser bastante sofisticado por lo que esto no es una

guía completa, pero debe darle una muestra de lo que awk puede hacer. Puede ser muy fácil

de usar, y se recomienda encarecidamente. Es el único filtro de Unix capaz de realizar

cálculos.

Conceptos básicos AWK

Un programa awk funciona en cada línea de un archivo de entrada. Puede tener una

secció n opcional de comandos COMENZAR que se realizan antes de procesar

cualquier contenido del archivo, a continuació n, la secció n principal de la secció n de

la secció n de la clase de texto en cada línea del archivo, y finalmente hay una secció n

opcional en D de acciones que se producen después de que la lectura del archivo ha

terminado:

Sintaxis

Fuente:[CITATION 30E17 \l 2058 ]

Un ejemplo prá ctico es mediante el uso del comando AWK filtrar los permisos de los

directorios y archivos de la carpeta raíz, para lograr eso se implementó el siguiente

có digo:
Como se muestra en la imagen anterior con el comando awk se logró filtrar la primera

columna del comando ls –l, la cual corresponde a los permisos de usuarios del

directorio raíz.

Otro ejemplo prá ctico es al dirigirnos al ejecutar la orden cat /etc/passwd/, este

comando nos mostrara la lista de usuarios del sistema, si se desea que solamente se

muestre por consola el nombre del usuario, se debe plantear el siguiente comando.
Ahora, por ejemplo, si deseamos visualizar el tamañ o de kb de los directorios del

comando ls –l, mediante el comando awk se puede ejecutar y ademá s se puede

agregar un aviso que me especifique el tipo de dato que está imprimiendo.

Ahora por ejemplo si se digita como pará metro una cadena de texto que diga “hola

mundo” y suponiendo que no sabemos el tamañ o y el contenido de dicha cadena si se

desea visualizar la ú ltima palabra de dicha cadena mediante el comando awk seria:
Como se muestra en la figura anterior, el comando awk imprimió por consola la

palabra mundo que corresponde al ú ltimo segmento de la cadena total.

Los patrones AWK incluyen expresiones regulares (utiliza la misma sintaxis que

'grep -E') y combinaciones que utilizan los símbolos especiales ‘&&’ significa

‘ló gica AND’, ‘' significa ‘OR ló gico’, ‘!’ significa “NO ló gico". También puede hacer

patrones relacionales, grupos de patrones, rangos, etc.

Ejercicios

1. Buscar las líneas en las que aparece la palabra bash en el archivo

/etc/passwd.
2. Buscar en el archivo /etc/group todas las líneas que empiezan por m.

3. Que ficheros o directorios tienen en su nombre un nú mero.


4. De la carpeta /etc/passwd mediante el comando awk mostrar por consola la

primera columna.

5. Mediante el comando awk reemplazar de la cadena de texto “hola mundo” la

palabra mundo por estudiante.


Conclusiones

En conclusió n, el comando grep permite realizar bú squedas de archivos, directorios o

cadenas de texto mediante filtros, esto a su vez representa una gran ventaja ya que

combinado con algunos comodines y tuberías pueden automatizarse muchas tareas.

También cabe mencionar que las expresiones regulares permiten describir ciertos

pará metros de expresiones complejas de textos, en el caso del comando grep se

utilizan para filtrar datos de acuerdo a ciertas condiciones.

Por otra parte, el comando AWK facilita muchas tareas como cá lculos y programació n,

como filtros de informació n por columnas, también permite incorporar el uso de

variables en las salidas y operaciones de comandos.

También podría gustarte