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