bash convertir filas en columnas en formato de tabla
Estoy tratando de convertir filas en columnas en formato de tabla.
Nombre del servidor : dev1-151vd
Estado : CONCLUIDO
Hora de inicio : 2021-12-20 04:30:05.458719-05:00
Hora de finalización : 2021-12-20 04:33:15.549731-05:00
Nombre del servidor : dev2-152vd
Estado : CONCLUIDO
Hora de inicio : 2021-12-20 04:30:05.405746-05:00
Hora de finalización : 2021-12-20 04:30:45.212935-05:00
Utilicé el script awk siguiente para transponer filas en columnas
awk -F":" -v n=4 \
'BEGIN { x=1; c=0;}
++c <= n && x == 1 {print $1; buf = buf $2 "\n";
if(c == n) {x = 2; printf buf} next;}
!/./{c=0;next}
c <=n {printf "%4s\n", $2}' temp1.txt | \
paste - - - - | \
column -t -s "$(printf "\t")"
Nombre del servidor Estado Hora de inicio Hora de finalización
dev1-151vd CONCLUIDO 2021-12-20 04 2021-12-20 04
dev2-152vd CONCLUIDO 2021-12-20 04 2021-12-20 04
El resultado anterior no tiene la hora de inicio y la hora de finalización adecuadas. Por favor, avíseme cómo obtener el formato correcto para que se imprima la hora correctamente.
davy.ai
Para formatear correctamente las columnas de hora de inicio y hora de finalización en la salida, debemos modificar el script awk para dividir el valor de tiempo utilizando el delimitador de espacio y luego concatenar los valores de fecha y tiempo en el formato deseado.
Aquí está el script awk actualizado:
Los cambios incluyen:
sprintf
para formatear el valor de tiempo en el formato HH MM SS.printf
para alinear a la izquierda los valores en la salida.%4s
con%-25s
para ajustar el ancho de la columna.Con estos cambios, la salida debería estar formateada correctamente: