Co znamená awk '{print $1+0.45 " " $2 " " $3 }' positionXYZ > positionX0.45YZ
znamená? Znamená to změnit řádek v prvním souboru a vložit nová data do druhého?
Přijatá odpověď:
Pojďme to rozebrat. awk '{foo}' file
použije výraz foo
na každý řádek file
a vytiskněte výsledek na terminál (standardní výstup). awk
rozdělí své vstupní řádky na prázdné místo (ve výchozím nastavení) a uloží každé pole jako $1
, $2
atd.
Skutečný výraz, který používáte, tedy znamená:přečtěte si každý vstupní řádek, přidejte 0,45 k hodnotě prvního pole a poté toto pole vytiskněte, stejně jako druhé a třetí. Nejsnáze to lze vysvětlit na jednoduchém příkladu:
$ 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
Takže, jak vidíte, awk
skript přidal 0,45 do prvního pole každého řádku a vytiskl jej spolu s druhým a třetím. Čtvrtý byl ignorován, protože jste mu neřekli, aby vytiskl $4
.
Další bit nemá nic společného s awk
, >
symbol je pro přesměrování výstupu a používá ho shell (bash nebo zsh nebo cokoli, co používáte). Obecně command > file
uloží výstup command
v souboru file
přepsání obsahu souboru, pokud existuje, a jeho vytvoření, pokud neexistuje.
Dát vše dohromady:
$ 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