Eu tenho um arquivo de entrada.
30.01.2025 47288.39 47288.39
30.01.2025 -1.00 47287.39
31.01.2025 50.00 47337.39
31.01.2025 -1600.00 45737.39
31.01.2025 1880.00 47617.39
31.01.2025 18.21 47635.60
31.01.2025 -3.46 47632.14
03.02.2025 -51.00 47581.14
03.02.2025 -10.00 47571.14
04.02.2025 -1600.00 45971.14
04.02.2025 1609.00 47580.14
05.02.2025 -800.00 46780.14
05.02.2025 -320.00 46460.14
05.02.2025 51.00 46511.14
05.02.2025 800.00 47311.14
05.02.2025 11.00 47322.14
Quero obter um arquivo de saída.
30.01.2025 47288.39 47288.39
30.01.2025 -1.00 47287.39 47287.39
31.01.2025 50.00 47337.39
31.01.2025 -1600.00 45737.39
31.01.2025 1880.00 47617.39
31.01.2025 18.21 47635.60
31.01.2025 -3.46 47632.14 47632.14
03.02.2025 -51.00 47581.14
03.02.2025 -10.00 47571.14 47571.14
04.02.2025 -1600.00 45971.14
04.02.2025 1609.00 47580.14 47580.14
05.02.2025 -800.00 46780.14
05.02.2025 -320.00 46460.14
05.02.2025 51.00 46511.14
05.02.2025 800.00 47311.14
05.02.2025 11.00 47322.14 47322.14
Tentei.
awk '{if(!seen[$1]++){print $0}}' File_1
Parece que você deseja duplicar o último campo da última entrada para uma determinada data?
Você precisará armazenar em buffer uma linha, de preferência em uma matriz, antes de imprimi-la na próxima iteração:
saída:
Você quer duplicar $3 quando o registro atual é o último daquele dia.
Acho mais fácil inverter as linhas, fazer algo para o primeiro "qualquer coisa" e depois inverter as linhas novamente:
Normalmente eu escreveria,
$4 = $3
mas isso destruiria o espaçamento das linhas atualizadas.Abordagem:
printf
linha atual; não termine a linha com\n
$NF
+ da linha anterior\n
\n
$NF
+\n
Uma
awk
ideia:Isso gera: