Marcar la hora de cada línea de un archivo con una fecha tomada del propio archivo

Marcar la hora de cada línea de un archivo con una fecha tomada del propio archivo

Tengo un archivo con el siguiente patrón repetido:

date
line 1
line 2
...
line x

Ejemplo:

10/30/2016 12:10:00
xxx 123
yyy 456
zzz 789

10/30/2016 12:20:00
xxx 234
yyy 567
zzz 890

¿Cómo puedo marcar la hora de cada línea con la fecha correspondiente, es decir:

10/30/2016 12:10:00
10/30/2016 12:10:00 xxx 123
10/30/2016 12:10:00 yyy 456
10/30/2016 12:10:00 zzz 789
10/30/2016 12:20:00
10/30/2016 12:20:00 xxx 234
10/30/2016 12:20:00 yyy 567
10/30/2016 12:20:00 zzz 890

Creo que debería ser posible con AWK, pero no tengo mucha experiencia con él. ¡Gracias de antemano!

Respuesta1

Una posibilidad es hacerlo como:

awk '/^[[:digit:]/]+[[:space:]]+[[:digit:]:]+/ {d=$1 " " $2; print; next; } /[^[:space:]]/ { print d " " $0 }'

que coincidirá con cualquier secuencia de dígitos y /seguido de algunos espacios, luego una serie de dígitos y :s, que debería coincidir con nuestra fecha. Si encontramos uno, guardamos los dos primeros campos en una variable, dluego imprimimos esta línea y continuamos. Luego, cada vez que encontramos una línea que tiene al menos un carácter que no sea un espacio (ya que parece que estás eliminando las líneas en blanco en tu ejemplo), imprimimos el valor actual en dla línea actual.

información relacionada