tac
é útil para inverter a ordem de linha de um arquivo - (também o BSD tail -r
pode inverter a ordem da linha)
tac file | awk 'p { if( p>$1 ) print p-$1; else print p } { p=$1 }'
Se, por algum motivo, você não puder usar tac
ou quiser usar o awk exclusivamente, use awk
para ler o arquivo inteiro na memória por meio de uma matriz e END{}
processará a matriz na ordem inversa ordem.
awk '{ r[i++]=$0}; END{ for(i=i-1; i>=0; i--)
if( r[i+1] ) if( r[i+1]>r[i] ) print r[i+1]-r[i]; else print r[i+1]
}' file