Was bedeutet awk '{print $1+0.45 " " $2 " " $3 }' positionXYZ > positionX0.45YZ
meinst du? Bedeutet das, eine Zeile in der ersten Datei zu ändern und die neuen Daten in die zweite einzufügen?
Akzeptierte Antwort:
Lassen Sie uns das aufschlüsseln. awk '{foo}' file
wendet den Ausdruck foo
an zu jeder Zeile der file
und das Ergebnis auf dem Terminal ausgeben (Standardausgabe). awk
teilt seine Eingabezeilen auf Leerraum (standardmäßig) und speichert jedes Feld als $1
, $2
usw.
Der tatsächliche Ausdruck, den Sie ausführen, bedeutet also:Lesen Sie jede Eingabezeile, addieren Sie 0,45 zum Wert des ersten Felds und drucken Sie dann dieses Feld sowie das zweite und dritte. Dies lässt sich am einfachsten an einem einfachen Beispiel erklären:
$ 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
Also, wie Sie sehen können, das awk
Das Skript fügte dem ersten Feld jeder Zeile 0,45 hinzu und druckte es dann zusammen mit dem zweiten und dritten. Das vierte wurde ignoriert, da Sie ihm nicht gesagt haben, dass es $4
drucken soll .
Das nächste Bit hat nichts mit awk
zu tun , der >
Das Symbol dient zur Ausgabeumleitung und wird von der Shell verwendet (bash oder zsh oder was auch immer Sie verwenden). Allgemein command > file
speichert die Ausgabe von command
in der Datei file
Inhalt überschreiben der Datei, falls vorhanden, und erstellen, falls nicht vorhanden.
Alles zusammenfügen:
$ 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