Ho un file di dati che voglio normalizzare utilizzando awk
, basato sull'ultimo punto dati. Pertanto, vorrei accedere prima all'ultimo punto dati, per normalizzare i dati, quindi elaborarli normalmente.
Il seguente metodo, usando tac
due volte, fa il lavoro, ma è forse più complicato del necessario.
$ cat file
0 5
1 2
2 3
3 4
$ tac file | awk 'NR==1{norm=$2} {print $1, $2/norm}' | tac
0 1.25
1 0.5
2 0.75
3 1
La mia domanda è la seguente: è possibile ottenere il risultato sopra usando solo awk?
Penso che la risposta sia "No, awk scansiona il file riga per riga", ma sono aperto a suggerimenti per alternative.
$ awk --version GNU Awk 3.1.8
. Puoi forse aggiungere una spiegazione molto piccola su come vengono gestiti due file di input e cosanext
fa?