GNU/Linux >> Znalost Linux >  >> Linux

Co je Awk ‘{print $1+0,45 “ ” $2 “ ” $3 }’ Soubor1> Soubor2?

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

Linux
  1. Co je číslo inodu v Linuxu?

  2. Co se počítá jako úprava nebo změna souboru?

  3. Co je soubor .so.2?

  1. Proč Grep považuje soubor za binární?

  2. Jak vykopat soubor z Awk?

  3. Co způsobuje, že soubory ztrácejí oprávnění?

  1. Awk z různých řádků?

  2. Co je File Transfer Protocol (FTP)

  3. Jaké jsou rozdíly mezi grep, awk a sed?