Carimbo de data e hora de cada linha de um arquivo com uma data retirada do próprio arquivo

Carimbo de data e hora de cada linha de um arquivo com uma data retirada do próprio arquivo

Eu tenho um arquivo com o seguinte padrão de repetição:

date
line 1
line 2
...
line x

Exemplo:

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

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

Como posso marcar cada linha com a data correspondente, ou seja:

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

Acho que deveria ser possível com o AWK, mas não tenho muita experiência com isso. Desde já, obrigado!

Responder1

Uma possibilidade é fazer assim:

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

que corresponderá a qualquer sequência de dígitos e /seguido por alguns espaços e depois uma série de dígitos e :s, que deve corresponder à nossa data. Se encontrarmos um, salvamos os dois primeiros campos em uma variável, ddepois imprimimos esta linha e seguimos em frente. Então, sempre que encontrarmos uma linha que tenha pelo menos um caractere que não seja espaço (já que você parece estar eliminando as linhas em branco no seu exemplo), imprimiremos o valor atual na dlinha atual.

informação relacionada