Cosa significa awk '{print $1+0.45 " " $2 " " $3 }' positionXYZ > positionX0.45YZ
significa? Significa cambiare una riga nel primo file e inserire i nuovi dati nel secondo?
Risposta accettata:
Analizziamolo. awk '{foo}' file
applicherà l'espressione foo
a ciascuna riga di file
e stampare il risultato sul terminale (output standard). awk
divide le sue righe di input su uno spazio bianco (per impostazione predefinita) e salva ogni campo come $1
, $2
ecc.
Quindi, l'espressione effettiva che stai eseguendo significa:leggi ogni riga di input, aggiungi 0,45 al valore del primo campo e quindi stampa quel campo così come il secondo e il terzo. Questo è più facilmente spiegabile con un semplice esempio:
$ cat file.txt
10 20 30 40
50 60 70 80
$ awk '{print $1+0.45 " " $2 " " $3 }' file.txt
10.45 20 30
50.45 60 70
Quindi, come puoi vedere, il awk
lo script ha aggiunto 0,45 al primo campo di ogni riga e quindi lo ha stampato insieme alla seconda e alla terza. Il quarto è stato ignorato poiché non gli hai detto di stampare $4
.
Il prossimo bit non ha nulla a che fare con awk
, il >
il simbolo è per il reindirizzamento dell'output ed è utilizzato dalla shell (bash o zsh o qualunque cosa tu stia usando). In generale command > file
salverà l'output di command
nel file file
sovrascrive i contenuti del file se esiste e creandolo se non esiste.
Mettere tutto insieme:
$ ls
file.txt
$ cat file.txt
10 20 30 40
50 60 70 80
$ awk '{print $1+0.45 " " $2 " " $3 }' file.txt > file2.txt
$ ls
file2.txt file.txt
$ cat file2.txt
10.45 20 30
50.45 60 70