Registro de data e hora de cada linha de um arquivo com uma data tirada do próprio arquivo [duplicado]

1

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 registrar a data e hora de cada linha com a data correspondente, por exemplo:

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. Obrigado antecipadamente!

    
por joos 31.10.2016 / 13:28

1 resposta

2

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, em seguida, uma série de dígitos e : s, que devem corresponder à nossa data. Se encontrarmos um, salvamos os dois primeiros campos em uma variável, d , depois imprimimos essa linha e seguimos em frente. Então, sempre que encontrarmos uma linha que tenha pelo menos um caractere não-espacial (já que você parece estar removendo as linhas em branco em seu exemplo), nós imprimimos o valor atual em d e depois a linha atual.

    
por 31.10.2016 / 13:40

Tags