com awk
:
awk '{a=$0}1; END{$0=a; if($1==2099&&$2==12&&$3==30){$3=31;print}}' file | column -t
-
r=$0
define a variávela
para toda a linha. -
1
uma condição verdadeira em que todas as linhas são impressas -
END{...}
esse bloco é executado quando todas as linhas são processadas-
$1==2099&&$2==12&&$3==30
se a última linha foi 30 de dezembro de 2099 (o 13 está faltando) -
$3=31
definiu o dia para31
-
print
e imprima essa linha adicional.
-
-
column -t
é colocar em coluna a lista.
O resultado com o seu arquivo de entrada:
YEAR MONTH DAY RES
2005 1 1 1000
2005 1 2 1001
...
2099 12 29 1002
2099 12 30 1003
2099 12 31 1003