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