A continuación, se verán unos ejemplos con la potencia de búsqueda de patrones con el comando GREP. Para este ejemplo utilizaremos un archivo de texto de nombre “textoejemplo.txt”……
1 2 3 4 5 |
día 1 valor de >7.644< del día 03/01/2025 archivo -arch01.txt- Jose Diaz Torrealba día 3 valor de >2.748< del día 05/01/2025 archivo -arch02.txt- Juan Solar día 6 valor de >9.361< del día 07/01/2025 archivo -arch03.txt- Luis R. día 7 valor de >9.984< del día 08/01/2025 archivo -arch04.txt- Renato Andres Fernandez Rojas día 8 valor de >9.361< del día 07/01/2025 archivo -arch05.txt- Ramon R. |
En el siguiente ejemplo mostraremos la 1era. línea después de la búsqueda del patrón…
1 2 3 |
grep -A 1 "arch03.txt" textoejemplo.txt día 6 valor de >9.361< del día 07-01-2025 archivo -arch03.txt- Luis R. día 7 valor de >9.984< del día 08-01-2025 archivo -arch04.txt- Renato Andres Fernandez Rojas |
Aquí utilizamos la opción “-A x”. Esto es lo que hace el comando
-A x Saca las x líneas siguientes a la búsqueda de patrón.
-B x Saca las x líneas anteriores a la búsqueda del patrón.
-C x Saca las x líneas antes y después de la búsqueda del patrón.
Con el comando ejecutado anteriormente, vemos que saca la línea del patrón a buscar y la línea siguiente. Nosotros solo queremos la linea siguiente. Para solucionarlo utilizamos el comando AWK y le indicamos que solo muestre la segunda línea….
1 2 |
grep -A 1 "arch03.txt" textoejemplo.txt | awk 'NR==2' día 7 valor de >9.984< del día 08-01-2025 archivo -arch04.txt- Renato Andres Fernandez Rojas |
En el siguiente comando, solo queremos que nos muestre el valor que se encuentra entre los caracteres “>9.984<”, solo el valor….
1 2 |
grep -A 1 "arch03.txt" textoejemplo.txt | awk 'NR==2' | grep -oP ">\\K[^<]+" 9.984 |
En el siguiente comando le diremos, que nos muestre el nombre del archivo que se encuentra entre los caracteres “-“….
1 2 |
grep -A 1 "arch03.txt" textoejemplo.txt | awk 'NR==2' | grep -oP '\-\K[^-]+(?=\-)' arch04.txt |
Aquí le indicamos que deseamos extraer la fecha que esta en el siguiente formato “dd/mm/aaaa”…..
1 2 |
grep -A 1 "arch03.txt" textoejemplo.txt | awk 'NR==2' | grep -oP '\b\d{2}/\d{2}/\d{4}\b' 08/01/2025 |
Aquí el nombre, para este ejemplo queremos todo lo que encuentra después del último carácter “-“, sin dejar carácter blanco al principio…
1 2 |
grep -A 1 "arch03.txt" textoejemplo.txt | awk 'NR==2' | grep -oP '.*-\s*\K.*' Renato Andres Fernandez Rojas |
Todo lo indicado anteriormente, se puede adaptar a sus necesidades. Espero les sirva…..