Bash: Extraer el valor de una variable de una cadena.
Necesito extraer el valor de una variable “error” de un archivo de registro. Aquí hay una línea de muestra:
ADVERTENCIA (Recuperación periódica) IJ000906: error=15 comprobar server.log
Necesitaría capturar el valor de “error”. Buscando en respuestas similares, he llegado a esto:
echo “ADVERTENCIA (Recuperación periódica) IJ000906: error=15 comprobar server.log” | grep -P ‘\d+ (error=?)’ -o
Sin embargo, no produce ningún valor. ¿Puede recomendar una solución funcional para este caso?
davy.ai
Sí, una solución funcional para este caso sería:
Explicación:
grep
– comando para buscar un patrón en un archivo-Po
– opciones para mostrar solo el patrón coincidente y utilizar expresiones regulares compatibles con Perl (PCRE)'error=\K\d+'
– patrón PCRE que coincide conerror=
y luego lo descarta usando\K
, y captura uno o más dígitos\d+
archivo_de_log
– el nombre o la ruta del archivo de registro en el que buscarEste comando solo mostrará el valor numérico de
error
encontrado en el archivo de registro.