0% encontró este documento útil (0 votos)
97 vistas7 páginas

Comando Grep: Las Opciones Más Usadas

Este documento describe el comando grep y sus opciones más usadas para buscar patrones en archivos de texto, así como expresiones regulares. También describe el comando sed, que permite modificar archivos de texto mediante expresiones regulares y opciones como sustituir, añadir, eliminar o mostrar líneas. Finalmente, incluye una serie de ejercicios para practicar el uso de grep y sed.

Cargado por

gdu
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
97 vistas7 páginas

Comando Grep: Las Opciones Más Usadas

Este documento describe el comando grep y sus opciones más usadas para buscar patrones en archivos de texto, así como expresiones regulares. También describe el comando sed, que permite modificar archivos de texto mediante expresiones regulares y opciones como sustituir, añadir, eliminar o mostrar líneas. Finalmente, incluye una serie de ejercicios para practicar el uso de grep y sed.

Cargado por

gdu
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 7

Comando grep

Las opciones más usadas:


-c En lugar de imprimir las líneas que coinciden, muestra el número de líneas
que coinciden.

-e PATRON nos permite especificar varios patrones de búsqueda o proteger


aquellos patrones de búsqueda que comienzan con el signo -.

-r busca recursivamente dentro de todos los subdirectorios del directorio actual.

-v nos muestra las líneas que no coinciden con el patrón buscado.

-i ignora la distinción entre mayúsculas y minúsculas.

-n Numera las líneas en la salida.

-E nos permite usar expresiones regulares. Equivalente a usar egrep.

-o le indica a grep que nos muestre sólo la parte de la línea que coincide con el
patrón.

-f ARCHIVO extrae los patrones del archivo que especifiquemos. Los patrones
del archivo deben ir uno por línea.

-H nos imprime el nombre del archivo con cada coincidencia.

Expresiones regulares
^X  devuelve las líneas que empiezan por X
X$  devuelve las líneas que terminan por X
“xxx”  devuelve las líneas en las que se encuentran los caracteres xxx
“xxx|yyy”el separador | (barra vertical) permite buscar mas de una
palabra en el mismo comando
“xx x\|y yy”el separador \| (barra vertical) permite buscar mas de una
cadena en el mismo comando

.  sustituye cualquier posible carácter


.*  cualquier carácter podrá estar 0 o + vecexes

\<  indica principio de palabra.

\>  indica fin de palabra.


\  elimina el significado del carácter que le precede (cuando quiero buscar un
carácter determinado y no aplicar su funcionalidad)

\b  representa el separador entre palabras

Metacaracteres
*  Cero o más del patrón precedente
+  Uno o más del patrón precedente
?  Cero o uno del patrón precedente
{n}  indica que el elemento que le precede debe estar exactamente "n" veces.
{n,m}  indica que el elemento que le precede debe estar entre "n" y "m" veces
Ejercicios
Mediante el comando wget descarga el fichero ubicado en:
http://www.unirioja.es/cu/jearansa/1112/ficheros/historia

2. Muestra todas las líneas que contengan la cadena “España”.


Recupera el mandato anterior y empleando la opcion -c del comando grep
comprueba que la palabra “España” aparece en 22 líneas.
3. Muestra todas las líneas que contengan primero la cadena “España” y
luego la cadena “guerra” en la misma linea.
4. Muestra las líneas que contengan primero la cadena “guerra” y luego la
cadena “España”.
5. Muestra todas las líneas que contengan las cadenas “Francia” o “Italia”
(puedes utilizar egrep).
6. Muestra las líneas que contengan ambas cadenas “España” y “guerra” en
cualquier orden
7. Muestra las líneas que contengan la cadena “guerra” pero no “España” (la
opción grep –v hace búsquedas inversas, es decir, todas las líneas que no
contengan la expresión regular especificada).
8. Muestra las líneas que contengan palabras de cinco letras terminadas en
“ía” (recuerda que “\b” representa el separador entre palabras).\bxxxxx\b
9. Muestra las líneas que contengan números de cuatro cifras (puedes crear
intervalos o rangos de valores por medio de [0-9].
10. Muestra las líneas que empiecen con “a” (el carácter de principio de
línea en expresiones regulares es “^”).
11. Muestra las líneas que terminen con “s” (el carácter para fin de línea en
expresiones regulares es $).
12. Muestra las líneas que comiencen con la cadena “la”.
13. Muestra las líneas que terminen con la cadena “as”.
14. Muestra las líneas que empiecen y terminen con “s”.
15. Muestra las líneas que empiecen con “a” o “A” y terminen con “s” o “S”.
16. Muestra las líneas que contengan fechas relativas al siglo XX (usa la
clase [[:digit:]]).
17. Muestra las líneas que contengan alguna palabra de 15 letras (no de
más, así que deberás usar “\b”; puedes usar la clase [:alpha:], que es
equivalente al rango [a-zA-Z], o el indicador de repetición de caracteres {n}).
18. Muestra el número de líneas que contengan la cadena “y” (utiliza la
opción “-c” para contar el número de líneas, o una tubería y luego “wc -l”).
19. Muestra el número de líneas que contenga la palabra “y” al
principio o final de línea.
20. Muestra el número de líneas que contenga la cadena “y” dentro de una
palabra (de más de una letra)
Comando sed

Otro comando que también nos permite trabajar con ficheros de texto es sed (stream editor). El mandato sed nos va a permitir
tomar un fichero de texto y modificarlo, de nuevo por medio de expresiones regulares o por alguna de sus opciones más
conocidas.

Su sintaxis seria la siguiente:

sed '[patron_a_buscar/][función_a_ejecutar]/texto_a_buscar/texto_a_reemplazar/[rango_de_busqueda]'
< fichero_a_reemplazar > fichero_nuevo

 Patrón a buscar: permite establecer coincidencias donde aplicar el comando


o Para buscar en líneas especificas escribiríamos el rango de las líneas, sin añadir “/” 
'3,4 s/nueva/vieja/g'
 Funciones a ejecutar:

s: buscar y remplazar una palabra o caracter


y: busca y remplaza un conjunto de caracteres

 Opciones
-i: permite modificar el mismo fichero en el que estamos trabajando
-e: permite realizar mas de un cambio en el mismo comando
-n: permite imprimir solo el contenido especificado (necesario cuando usemos ‘p’
 Texto a remplazar
o \U& (upper case): convierte las letras a mayusculas
o \L& (lower case): convierte letras a minúsculas
 Rango de búsqueda
g: permite hacer cambios a todo el contenido que le pasemos al comando sed
G: añade un salto de línea al terminar la línea en la que se encontró el patron de búsqueda
 Opciones de búsqueda:
o ‘[numero]q’: permite imprimir las primeras “numero” líneas
o ‘[numero]p’: permite imprimir la línea “numero”
o ‘$p’: permite imprimir la ultima línea del fichero.
o ‘[num1]p’ && ‘[num2]p’ permite imprimir el contenido de la línea “num1” Y el de la línea “num2”
(deberemos escribir 2 veces el comando sed)

sed -n '1p' Frases.txt && sed -n '3p' Frases.txt

 Podríamos lograr la misma funcionalidad mediante la opción -e

sed -n -e '1p' Frases.txt -e '3p' Frases.txt

o ':a; N; 1,[num1]ba; D': permite imprimir las ultimas [num1] líneas


 La opción mas optima para este tipo de funciones es emplear el comando tail -n [num1] Fichero.txt,
el cual imprimirá las ultimas “num1” líneas del fichero. Con head -n [num1] Fichero.txt mostramos
las primeras “num1” lineas del fichero
o ‘/ejemplo/p’: muestra las lineas que contengan la palabra ejemplo, con ¡p mostraríamos las lineas que no
contengan ejemplo
o '/^.\{num1\}/p': muestra las lineas que tienen “num1” caracteres o mas
o ‘[numero] d’: permite eliminar la línea “numero del fichero
La potencia de sed hace que su sintaxis sea menos intuitiva que la propia
de grep. Las expresiones regulares van a seguir siendo válidas, pero hay
que ser capaces también de expresar las acciones que llevaremos a cabo
sobre el fichero de texto correspondiente (en grep siempre era mostrar, con
sed puede ser mostrar, sustituir, añadir, eliminar...).

21. Muestra las 8 primeras líneas del fichero historia:


La opción –n consigue que las líneas no se muestren duplicadas. La opción
“p” sirve para imprimir el texto seleccionado (de las líneas 1 a 8).
22. Crea un fichero llamado “fichero” que contenga las 20 primeras líneas
del fichero “historia”. Comprueba que realmente tenga 20 líneas (“wc -l ”).
23. Muestra el contenido del fichero (opción p); utiliza la opción –n para que
el texto no se muestre duplicado.
24. Muestra las líneas que contengan la cadena “España”, (usar el comando
sed):
Comprueba por medio de una tubería que el resultado es 4.
25. Borra las líneas comprendidas entre la 5 y la 10 (igual que mostrar un
grupo de líneas pero con la opción “d”). Si usas la opción –n no verás
ninguna de las líneas.
Comprueba que, del fichero original de 20 líneas, el resultado de borrar las
líneas entre la 5 y la 10 contiene 14 líneas (“wc –l”).
26. Borra todas las líneas en blanco (recuerda la expresión regular de
principio y fin de línea).
Comprueba por medio de una tubería que el resultado son 17 líneas.
27. Borra todas las líneas que contengan la cadena “en”.
Comprueba con una tubería que el resultado son 11 líneas.
28. Borra todas las líneas que contengan las cadenas “en” y “el” (trata de
encadenar las dos expresiones regulares, sed admite como primer atributo
varias expresiones regulares; si no también puedes hacer uso de tuberías).
Comprueba por medio de una tubería que quedan 8 líneas que no contienen
las anteriores cadenas.
29. Borra la primera palabra de cada línea. Este mandato lo vamos a hacer
por sustitución (s) en lugar de hacerlo por borrado (d).
La sintaxis para sustituir la primera palabra de cada línea por “nada” sería:

$sed “s/^[[:alpha:]]*\b//g” fichero

(La “s” indica que hacemos una sustitución; entre los dos primeros “/.../”
está la expresión regular que queremos reemplazar, en este caso
“^[[:alpha:]]*\b”; entre el segundo y el tercer “/.../” aparece la expresión
por la cual será reemplazada, en este caso por nada; la “g” final indica que
el cambio debe ser global con respecto a las líneas, es decir, todas las
apariciones de cada línea; si no indicamos nada, sólo se llevará a cabo en la
primera aparición de cada línea.
Es importante recordar la idea de que sed, al igual que grep, por defecto,
actúan sobre cada línea).
30. Cambia la primera aparición en cada línea de la letra “a” por “@”.
31. Cambia todas las apariciones de la letra “a” por “@”.
32. Cambia todas las apariciones de la palabra España por Spain.
33. Reemplaza todas las vocales de minúsculas a mayúsculas (puedes usar
tuberías, concatenar varias expresiones regulares, la opción
“y/caracteres_a_reemplazar/caracteres_reemplazados/”...).
34. Elimina todas la apariciones de la letra “e”.
35. Elimina todas las vocales (mayúsculas, minúsculas, acentuadas o no).
36. Elimina todos los espacios en blanco.

También podría gustarte