Adiciona valor a um número na última linha de um arquivo csv

1

Eu tenho um arquivo csv no seguinte formato:

0.25,20171225,20:00
3,20171226,23:59
3.5,20171231,00:01
1.75,20180108,05:43

Como posso adicionar um valor ao primeiro campo na última linha da linha de comando?

Então, se eu quisesse adicionar 1.25 , o arquivo ficaria assim:

0.25,20171225,20:00
3,20171226,23:59
3.5,20171231,00:01
3,20180108,05:43

Como o arquivo está em constante crescimento, não há um número de linha fixo para a última linha.

    
por nath 08.01.2018 / 12:17

1 resposta

3

Aqui está a solução do awk:

awk -F, -v OFS=, 'l{print l}{l=$0}END{$1+=1.25;print}' file

A ideia é imprimir a linha anterior em vez da atual.

  • -F, e -v OFS=, definem o separador de campos de entrada e saída
  • l{print l} imprime a variável l apenas se não for zero (numérico) ou vazia (string) - que impede a impressão da primeira linha, porque l ainda não está definido
  • l=$0 define a variável l para linha inteira
  • finalmente imprimimos a última linha no mesmo END alterando seu primeiro campo

Saída:

0.25,20171225,20:00
3,20171226,23:59
3.5,20171231,00:01
3,20180108,05:43
    
por 08.01.2018 / 12:26