Příkaz 'awk' v Linuxu existuje různá použití. Lze jej například použít k tisku obsahu textového souboru. První řádek mnoha textových souborů obsahuje záhlaví souboru a někdy musí být první řádek při tisku obsahu souboru přeskočen. V tomto kurzu vám ukážeme, jak splnit tento úkol pomocí příkazu 'awk'.
Vytvořte textový soubor
Chcete-li pokračovat v tomto kurzu, vytvořte textový soubor s názvem odděleným tabulátory seznam knih.txt s následujícím obsahem. Tento soubor obsahuje seznam knih s odpovídajícími autory. V tomto kurzu vám ukážeme, jak po vynechání prvního řádku vytisknout různé části tohoto souboru.
Kybernetická bezpečnost s bash Paul Troncone, Carl AlbingPříkazový řádek Kung Fu Jason Cannon
Linuxový příkazový řádek Travis Booth
Bash v jednoduchých krocích Mike McGrath
Unix v jednoduchých krocích Mike McGrath
Příklad 1: Přeskočte první řádek souboru pomocí NR a operátoru '>'
Proměnná NR udává počet záznamů v souboru. Následující příkaz 'awk' používá proměnnou NR k přeskočení prvního řádku souboru. Hodnota NR je 1 pro první řádek. Následující příkaz vytiskne řádky, pro které je hodnota NR větší než 1.
$ cat booklist.txtSeznam knih $ awk '(NR> 1).txt
Následující výstup bude vytvořen po spuštění výše uvedených příkazů. Výstup zahrnuje všechny řádky jiné než první řádek souboru.
Příklad 2: Přeskočte první řádek pomocí NR a '!= 'operátor
Následující příkaz 'awk' je podobný příkazu v předchozím příkladu. Avšak „!= 'místo'> 'je zde použit operátor porovnání.
$ cat booklist.txt$ awk 'NR!= 1 'seznam knih.txt
Následující výstup bude vytvořen po spuštění výše uvedených příkazů. Výstup zobrazuje všechny řádky jiné než první řádek souboru.
Příklad 3: Přeskočte první řádek souboru pomocí podmíněného příkazu
Následující příkaz 'awk' vytiskne řádky souboru, pokud je příkaz if pravdivý. Zde bude příkaz if pravdivý, pouze když hodnota NR nebude rovna 1.
$ cat booklist.txt$ awk 'if (NR!= 1) Seznam knih print.txt
Následující výstup bude vytvořen po spuštění výše uvedených příkazů. Výstup zahrnuje všechny řádky kromě prvního řádku souboru.
Příklad 4: Vytiskněte si názvy knih ze souboru, ale přeskočte první řádek
V tomto příkladu se k tisku všech názvů knih kromě prvního používají dva příkazy „awk“. Příkaz 'awk' načte první sloupec ze souboru na základě oddělovače polí (\ t) a odešle výstup do druhého příkazu 'awk'. Druhý příkaz 'awk' vytiskne požadovaný výstup.
$ cat booklist.txt$ awk -F "\ t" 'print $ 1' seznam knih.txt | awk 'NR!= 1 tisk '
Následující výstup bude vytvořen po spuštění výše uvedených příkazů. Výstup zobrazuje všechny názvy knih kromě těch první.
Příklad 5: Po přeskočení prvního řádku zformátujte obsah souboru
Možnost '-F', proměnná NR a funkce printf se používají v následujícím příkazu 'awk' ke generování formátovaného výstupu po přeskočení prvního řádku. Příkaz rozdělí obsah souboru do sloupců založených na \ t a printf vytiskne první a druhý sloupec, když je hodnota NR alespoň 2.
$ cat booklist.txt$ awk -F '\ t' 'NR> = 2 printf "% 30s% 20s \ n", $ 1, $ 2' seznam knih.txt
Následující výstup bude vytvořen po spuštění výše uvedených příkazů. Výstup zobrazuje formátovaný obsah souboru, s výjimkou prvního řádku souboru.
Příklad 6: Vytiskněte názvy knih po přeskočení prvního řádku pomocí NR a NF
Následující příkaz 'awk' používá volbu '-F' a NR a NF k tisku jmen knih po přeskočení první knihy. Možnost '-F' se používá k oddělení obsahu základny souborů na \ t. NR se používá k přeskočení prvního řádku a NF se používá k tisku pouze prvního sloupce.
$ cat booklist.txt$ awk -F '\ t' 'NR> 1 && NF = 1' seznam knih.txt
Následující výstup bude vytvořen po spuštění výše uvedených příkazů. Výstup zahrnuje všechny názvy knih v souboru, kromě těch, které byly uvedeny v první knize.
Příklad 7: Tisknout formátovaná jména autorů po přeskočení prvního řádku
Následující příkaz 'awk' používá možnost '-F' a podmíněný příkaz k tisku jmen autorů po přeskočení prvního řádku. Zde se hodnota NR použije v podmínce if. Zde se jako první řádek namísto obsahu z prvního řádku vytiskne „Jméno autora: \ n \ n“. Pro ostatní hodnoty NR budou vytištěna jména autorů ze souboru.
$ cat booklist.txt$ awk -F '\ t' 'if (NR == 1) printf "\ nAutorské jméno: \ n \ n"; else printf "% s \ n", seznam knih $ 2 '.txt
Následující výstup bude vytvořen po spuštění výše uvedených příkazů. Výstup zobrazuje text „Jméno autora:“ s novým řádkem a všechna jména autorů jsou vytištěna kromě prvního.
Závěr
První řádek souboru lze přeskočit pomocí různých příkazů systému Linux. Jak je ukázáno v tomto kurzu, existují různé způsoby, jak přeskočit první řádek souboru pomocí příkazu 'awk'. Je pozoruhodné, že proměnnou NR příkazu 'awk' lze použít k přeskočení prvního řádku libovolného souboru.