103.7 - Realizar búsquedas en archivos de texto usando expresiones regulares
Importancia
3
Descripción
El candidato debe ser capaz de manipular archivos y cadenas de texto usando expresiones regulares. El objetivo incluye la creación de expresiones re\ gulares sencillas que contengan varios elementos de notación así como el uso de herramientas para realizar búsquedas con expresiones regulares dentr\ o de un sistema de archivos o del contenido de un archivo.
Áreas de conocimiento clave:
Crear expresiones regulares sencillas que contengan varios elementos de notación.
Saber diferenciar las expresiones regulares básicas de las extendidas.
Entender los conceptos de caracteres especiales, clases de caracteres, cuantificadores y anclas.
Usar herramientas para realizar búsquedas con expresiones regulares dentro de un sistema de archivos o del contenido de un archivo.
Usar las expresiones regulares para borrar, modificar o reemplazar texto.
Contenidos
Regular expressions (REGEX)
Hacen referencia a cadenas de texto, se utilizan dentro del contenido de alguna cosa. Caracteres especiales que nos sirve para definir patrones de cadenas de texto. Es importante por que en linux todo es un fichero y toda la información es texto, saber filtrar y encontrar nos interesa.
grep ".ancho" el_quijote.txt Aquí el "." hace referencia a cualquier carácter. Esto es importante por que Linux es sensitive case pero cuidado por que al usar con el punto significa sancho, Sancho, pancho, ancho...
recuerda que con grep -i nos saltamos el case sensitive.
ls -l | grep sess*Aquí le están entrando datos de entrada y sigue evaluando como cadena de texto, por lo tanto es una expresión regular.

BASIC REGEX
^ -> inicio de línea
$ -> fin de línea
" * " -> de 0 a N veces el carácter anterior
" . " -> cualquier carácter n veces
[A-B] -> rango de valores
Por ejemplo
grep [Ss]ancho mini_quijote.txt pero es mas fácil hacerlo con grep -i
EXTENDED REGEX
No todos los comandos aceptan extended regex, uno que sí es grep que admite extended regex pero usando la opción -E
+ -> De 1 a N veces el carácter anterior
? -> De 0 a 1 vez el carácter anterior
Vamos a ver un ejemplo, partiendo del siguiente archivo:
grep -nE "^,*$" sample.conf -> cumple para las tres líneas ya que es 0 o n.
grep -nE "^,+$" sample.conf -> la coma tiene que aparecer 1 a n veces, solo se cumple la 2a y 3a líneas.
grep -nE "^,?$" sample.conf -> la coma tiene que aparecer 0 o una vez solo, solo se cumple la primera y segunda línea.
Resumen grep

Command chaining
El operador && solo ejecutará el segundo comando si el primero tiene éxito. Si el primer comando se ejecuta con un estado de salida cero (0), el segundo comando se ejecutará; de lo contrario, no lo hará.
Este operador se comporta como un else en programación. Ejecuta el segundo comando si el primero falla (si su código de salida es distinto de 0).
Ejecuta un comando o script en segundo plano, permitiendo que la terminal permanezca disponible para otras tareas.
Ejecuta múltiples comandos de forma secuencial, sin importar si los anteriores tuvieron éxito o fallaron.
El operador ! niega una expresión en un comando. Por ejemplo, para eliminar todos los archivos excepto uno en un directorio:
El pipe (|) toma la salida de un comando y la usa como entrada del siguiente comando.
Concatenación
Permite dividir un comando largo en varias líneas.
Agrupa comandos para forzar un orden de ejecución.
Agrupa varios comandos para que se ejecuten como una unidad, pero solo si el primer comando tiene éxito.
Last updated