Bash:
Analizando una fecha a partir de una cadena de texto
Cómo hacerlo:
Bash en sí es bastante limitado en capacidades directas de análisis de fechas, a menudo dependiendo de herramientas externas como date
y awk
para manipulaciones más sofisticadas. Aquí está cómo puedes analizar un formato específico y luego usarlo con el comando date
para convertirlo o realizar operaciones.
Ejemplo 1: Extraer una cadena de fecha y convertirla a otro formato.
Supongamos que tienes una fecha en el formato yyyy-mm-dd
y quieres convertirla a dd-mm-yyyy
.
fecha_original="2023-04-01"
fecha_formateada=$(date -d $fecha_original '+%d-%m-%Y')
echo $fecha_formateada
Salida de Ejemplo:
01-04-2023
Esto usa el comando date
con la opción -d
para especificar la cadena de fecha de entrada, y +%d-%m-%Y
para formatear la salida.
Ejemplo 2: Usar awk
para analizar una fecha de una línea de texto estructurado y convertirla.
Suponiendo que tienes una línea de archivo de registro:
2023-04-01 12:00:00 Usuario inició sesión
Puedes extraer y convertir la parte de la fecha usando awk
y date
.
linea_registro="2023-04-01 12:00:00 Usuario inició sesión"
parte_fecha=$(echo $linea_registro | awk '{print $1}')
fecha_formateada=$(date -d $parte_fecha "+%A, %B %d, %Y")
echo $fecha_formateada
Salida de Ejemplo:
sábado, abril 01, 2023
Este ejemplo usa awk
para dividir la línea de registro y extraer la parte de la fecha ($1
representa el primer campo delimitado por espacios), y luego se usa date
para reformatearla.
Usando herramientas de terceros
Para análisis más complejos o cuando se trata de una amplia variedad de formatos de fecha, herramientas de terceros como dateutils
pueden ser muy útiles.
Ejemplo con dateutils
:
Suponiendo que tienes una cadena de fecha en un formato no estándar, por ejemplo, 01 de abril, 2023
.
fecha_original="01 de abril, 2023"
fecha_formateada=$(dateconv -i "%d de %B, %Y" -f "%Y-%m-%d" <<< $fecha_original)
echo $fecha_formateada
Salida de Ejemplo:
2023-04-01
Este comando usa dateconv
de dateutils
, especificando el formato de entrada con -i
y el formato de salida deseado con -f
. dateutils
soporta una amplia gama de formatos de fecha y hora, haciéndolo muy versátil para tareas de análisis de fecha en scripts de Bash.