GNU/Linux >> Znalost Linux >  >> Linux

Příkaz Linux AWK – Příklady syntaxe použití Linuxu a Unixu

V této příručce pro začátečníky se naučíte úplné základy awk příkaz. Uvidíte také některé ze způsobů, jak jej můžete použít při práci s textem.

Začněme!

Co je awk příkaz?

awk je skriptovací jazyk a je užitečný při práci v příkazovém řádku. Je to také široce používaný příkaz pro zpracování textu.

Při použití awk , můžete vybrat data – jeden nebo více kusů jednotlivého textu – na základě vámi poskytnutého vzoru.

Například některé operace, které můžete provádět pomocí awk hledáte konkrétní slovo nebo vzor v zadaném textu, nebo dokonce vyberete určitý řádek nebo určitý sloupec v souboru, který poskytnete.

Základní syntaxe awk příkaz

Ve své nejjednodušší podobě, awk za příkazem následuje sada jednoduchých uvozovek a sada složených závorek s názvem souboru, který chcete prohledávat, zmíněným jako poslední.

Vypadá to nějak takto:

awk '{action}' your_file_name.txt

Když chcete vyhledat text, který má určitý vzor nebo hledáte v textu konkrétní slovo, příkaz bude vypadat nějak takto:

awk '/regex pattern/{action}' your_file_name.txt

Jak vytvořit ukázkový soubor

Chcete-li vytvořit soubor v příkazovém řádku, použijte touch příkaz.
Například:touch filename.txt kde filename , je název vašeho souboru.

Poté můžete použít open příkaz (open filename.txt ) a otevře se textový editor, jako je TextEdit, kam můžete přidat obsah souboru.

Řekněme, že máte textový soubor information.txt , který obsahuje data rozdělená do různých sloupců.

Obsah souboru může vypadat nějak takto:

fristName       lastName        age     city       ID

Thomas          Shelby          30      Rio        400
Omega           Night           45      Ontario    600
Wood            Tinker          54      Lisbon     N/A
Giorgos         Georgiou        35      London     300
Timmy           Turner          32      Berlin     N/A

V mém příkladu je jeden sloupec pro firstName , lastName , age , city a ID .

Kdykoli si můžete zobrazit výstup obsahu svého souboru zadáním cat text_file , kde text_file je název vašeho souboru.

Jak vytisknout veškerý obsah souboru pomocí awk

Chcete-li vytisknout vše obsah souboru, akce, kterou určíte uvnitř složených závorek, je print $0 .

Bude to fungovat úplně stejně jako cat dříve zmíněný příkaz.

awk '{print $0}' information.txt

Výstup:

fristName       lastName        age     city       ID

Thomas          Shelby          30      Rio        400
Omega           Night           45      Ontario    600
Wood            Tinker          54      Lisbon     N/A
Giorgos         Georgiou        35      London     300
Timmy           Turner          32      Berlin     N/A

Pokud chcete, aby každý řádek měl počet řádků, použijte NR vestavěná proměnná:

awk '{print NR,$0}' information.txt 
1 fristName     lastName        age     city       ID
2 
3 Thomas        Shelby          30      Rio        400
4 Omega         Night           45      Ontario    600
5 Wood          Tinker          54      Lisbon     N/A
6 Giorgos       Georgiou        35      London     300
7 Timmy         Turner          32      Berlin     N/A

Jak vytisknout konkrétní sloupce pomocí awk

Při použití awk , můžete určit určité sloupce, které chcete vytisknout.

Chcete-li vytisknout první sloupec, použijte příkaz:

awk '{print $1}' information.txt

Výstup:

Thomas
Omega
Wood
Giorgos
Timmy

$1 znamená první pole, v tomto případě první sloupec.

Pro tisk druhého sloupce byste použili $2 :

awk '{print $2}' information.txt

Výstup:

lastName

Shelby
Night
Tinker
Georgiou
Turner

Způsob awk určuje, kde každý sloupec začíná a končí, je ve výchozím nastavení mezerou.

Chcete-li vytisknout více než jeden sloupec, například první a čtvrtý sloupec, postupujte takto:

awk '{print $1, $4}' information.txt

Výstup:

fristName city
 
Thomas    Rio
Omega     Ontario
Wood      Lisbon
Giorgos   London
Timmy     Berlin

$1 představuje první vstupní pole (první sloupec) a $4 představuje čtvrtý. Oddělujete je čárkou $1,$4 , takže výstup má mezeru a je čitelnější.

Chcete-li vytisknout poslední pole (poslední sloupec), můžete také použít $NF který představuje poslední pole v záznamu:

awk '{print $NF}' information.txt 

Výstup:

ID

400
600
N/A
300
N/A

Jak vytisknout konkrétní řádky sloupce

Můžete také určit řádek, který chcete vytisknout z vámi zvoleného sloupce:

awk '{print $1}' information.txt | head -1 

Výstup:

FirstName

Pojďme ten příkaz rozebrat. awk '{print $1}' information.txt vytiskne první sloupec. Potom je výstup tohoto příkazu (který jste viděli dříve) propojený pomocí symbolu potrubí | , na příkaz head, kde je jeho -1 argument vybere první řádek sloupce.

Pokud byste chtěli vytisknout dva řádky, udělali byste:

awk '{print $1}' information.txt | head -2 

Výstup:

FirstName
Dionysia

Jak vytisknout čáry se specifickým vzorem v awk

Můžete vytisknout řádek, který začíná s konkrétním písmenem.

Například:

awk '/^O/' information.txt

Výstup:

Omega           Night           45      Ontario    600

Tento příkaz vybere libovolný řádek s textem, který začíná s O .

Používáte symbol šipky nahoru (^ ), nejprve označuje začátek řádku a poté písmeno, kterým má řádek začínat.

Můžete také vytisknout řádek, který končí v určitém vzoru:

awk '/0$/' information.txt 

Výstup:

Thomas          Shelby          30      Rio        400
Omega           Night           45      Ontario    600
Giorgos         Georgiou        35      London     300

Tím se vytisknou řádky, které končí 0$ symbol se používá za znakem k označení toho, jak řádek skončí.

Tento příkaz lze také změnit na:

awk '! /0$/' information.txt 

! se používá jako NOT , takže v tomto případě vybere řádky, které NEKONČÍ na 0 .

fristName       lastName        age     city       ID

Wood            Tinker          54      Lisbon     N/A
Timmy           Turner          32      Berlin     N/A

Jak používat regulární výrazy v awk

Chcete-li vytisknout slova obsahující určitá písmena a vytisknout slova, která odpovídají zadanému vzoru, znovu použijte lomítka // , zobrazený dříve.

Pokud chcete hledat slova obsahující on , udělali byste:

awk ' /io/{print $0}' information.txt 

Výstup:

Thomas          Shelby          30      Rio        400
Omega           Night           45      Ontario    600
Giorgos         Georgiou        35      London     300

To odpovídá všem záznamům, které obsahují io .

Řekněme, že máte další sloupec – department sloupec:

fristName       lastName        age     city       ID   department

Thomas          Shelby          30      Rio        400  IT
Omega           Night           45      Ontario    600  Design
Wood            Tinker          54      Lisbon     N/A  IT
Giorgos         Georgiou        35      London     300  Data
Timmy           Turner          32      Berlin     N/A  Engineering

Chcete-li najít všechny informace o lidech pracujících v IT , budete muset zadat řetězec, který hledáte, mezi lomítky, // :

awk '/IT/' information.txt 

Výstup:

Thomas          Shelby          30      Rio        400  IT
Wood            Tinker          54      Lisbon     N/A  IT

Co kdybyste chtěli vidět pouze jména a příjmení lidí pracujících v IT? ?

Sloupec můžete určit takto:

awk '/IT/{print $1, $2}' information.txt 

Výstup:

Thomas Shelby
Wood   Tinker

Zobrazí se pouze první a druhý sloupec, kde je IT místo zobrazení všech polí.

Při hledání slov se specifickým vzorem může nastat situace, kdy budete muset použít znak escape, například:

awk '/N\/A$/' information.txt 

Výstup:

Wood            Tinker          54      Lisbon     N/A
Timmy           Turner          32      Berlin     N/A

Chtěl jsem najít řádky, které končí vzorem N/A .

Takže při hledání mezi ' // ' jak bylo doposud ukázáno, musel jsem použít znak escape (\ ) mezi N/A , jinak bych dostal chybu.

Jak používat porovnávací operátory v awk

Pokud jste například chtěli najít všechny informace o zaměstnancích mladších 40 , použijete < porovnávací operátor takto:

awk '$3 <  40 { print $0 }' information.txt

Výstup:

Thomas          Shelby          30      Rio        400
Giorgos         Georgiou        35      London     300
Timmy           Turner          32      Berlin     N/A

Výstup zobrazuje pouze informace osob mladších 40 let.

Závěr

A tady to máte! Nyní znáte úplné základy, abyste mohli začít pracovat s awk a manipulovat s textovými daty.

Chcete-li se dozvědět více o Linuxu, freeCodeCamp má k dispozici širokou škálu výukových materiálů.

Zde je několik z nich, jak začít:

  • Základy Linuxu – praktický workshop
  • Linux pro etické hackery (Kali Linux Tutorial)
  • Příručka Linux Command Handbook

Děkuji za přečtení a přeji příjemné učení 😊


Linux
  1. Příkaz Linux Sed:Použití a příklady

  2. Linuxové příkazy – přehled a příklady

  3. UNIX / Linux:10 příkladů příkazů Netstat

  1. Linux Cat Command:Použití a příklady

  2. Jak kopírovat soubory v Linuxu a Unixu? 10 cp Příklady příkazů

  3. Příklady příkazů awk v Linuxu

  1. Použití linuxového příkazu find – Použití s ​​příklady

  2. 5 Praktické příklady příkazu dd v Linuxu

  3. 10 Příklady příkazů Xargs v Linuxu / UNIXu