Ärme

10 suurepärast Awk-käsu näidet

10 suurepärast Awk-käsu näidet
Awk käsk on võimas vahend andmete töötlemiseks. See saab sisendandmeid, manipuleerib nendega ja annab tulemusi standardväljundis. Faili ridadel ja veergudel saab teha erinevaid toiminguid.

Andmete tõhusaks töötlemiseks on käsu “awk” põhiteadmiste tundmine väga oluline ja see postitus hõlmab käsu “awk” põhijooni. Kontrollime kõigepealt süntaksit:

$ awk [valikud] [fail]

Mõned sagedamini kasutatavad valikud on toodud allolevas tabelis:

Variant Kirjeldus
-F Failieraldaja määramiseks
-f Määrake fail, mis sisaldab skripti „awk”
-v Muutuja määramiseks

Vaatame mõningaid näiteid käsu “awk” kasutamise kohta ja tutvustamiseks olen teinud tekstifaili nimega testFile.txt:

1. Kuidas printida faili veerg käsuga awk?

Käsku „awk” saab kasutada tekstifaili konkreetse veeru saamiseks. Faili sisu printimiseks kasutage järgmist

$ cat testFile.txt

Nüüd faili teise veeru printimiseks kasutage:

$ awk 'print $ 2' testFile.txt

Rohkem kui ühe välja printimiseks kasutage käsku:

$ awk 'print $ 1, $ 2, $ 3' testFile.txt

Kui te ei kasuta koma “,”, siis jääb väljund tühikuteta:

$ awk 'print $ 1 $ 2 $ 3' testFile.txt

2. Regulaaravaldise kasutamine käsuga awk:

Stringide või mis tahes avaldise sobitamiseks kasutame kaldkriipse „//”, näiteks kui soovite printida „Ajalugu” õppivate inimeste nimesid, kasutage järgmist:

$ awk '/ History / print $ 2' testFile.txt

Väljund näitab selgelt, et ainult “Sam” ja “Tommy” õpivad kursust “Ajalugu”.

3. Kuidas kasutada relatsioonilist väljendit käsuga “awk”:

Konkreetse välja sisu sobitamiseks saab kasutada relatsioonilist väljendit. Mis tahes stringi või avaldise sobitamiseks väljaga, märkige väli ja kasutage võrdlusoperaatorit ~ ~ mustriga, nagu on esitatud järgmises käsus:

$ awk '$ 3 ~ / is / print $ 2' testFile.txt

Ülaltoodud väljund, mis kuvab 2. veeru kõik väljad kõigi veergude 3 sees olevate väljade suhtes.

Ja ülaltoodud käsu vastupidise väljundi saamiseks kasutage! ~ ”Operaator:

$ awk '$ 3! ~ / is / print $ 2 'testFile.txt

Võrdluseks võime kasutada ka selliseid operaatoreid nagu suurem kui “>” ja vähem kui “<” and equal “=” as well:

$ awk '$ 4> 70 print $ 2' testFile.txt

Väljundisse on trükitud nende inimeste nimed, kes said hinnet üle 70.

4. Vahemiku mustri kasutamine käsuga awk:

Vahemikku saab kasutada ka otsimiseks; kasutage vahemiku eraldamiseks komaga “,”, nagu on näidatud allpool mainitud käsus:

$ awk '/ Joel /, / Marlene / print $ 3' testFile.txt

Väljundis kuvatakse 2. veeru objektid vahemikus „Joel” kuni „Marlene”. Vahemiku määratlemiseks võime kasutada kahekordset võrdusmärki “==”; vaata allpool toodud näidet:

$ awk '$ 4 == 80, $ 4 == 90 print $ 0' testFile.txt

Väljundil kuvatakse veerus 2 olevate inimeste nimed 4. veeru märkide vahemiku „70–80“ vahemikus.

5. Kuidas kombineerida mustrit loogilise operaatori abil:

Loogiliste operaatorite nagu OR “||,” JA “&&” kasutamine võimaldab teil otsingu jaoks mustreid kombineerida. Kasutage järgmist käsku

$ awk '$ 4> 80 && $ 6> 0.4 print $ 2 'testFile.txt

Ülaltoodud käsk prindib inimeste nimed neljanda väljale, mis on olulisem kui 80, ja kuuenda välja vastu, mis on suurem kui 0.4. Ja ainult kaks kirjet täidavad tingimust.

6. Awk käsib eriväljendeid:

Seal on kaks eriväljendit:Alusta"Ja"LÕPP”:

BEGIN: Toimingu sooritamine enne andmete töötlemist

LÕPP: Toimingu sooritamine pärast andmete töötlemist

$ awk 'BEGIN print "Töötlemine on alanud"; print $ 2; END print “Töötlemine on lõppenud” 'testFile.txt

7. Awk-i kasulik sisseehitatud muutuja:

Käsul awk on mitmesuguseid muutujaid, mis aitavad andmetöötlust:

Muutuv Kirjeldus
NF See annab andmeväljade arvu
NR See annab praeguse rekordi numbri
FAILI NIMI Kuvab praegu töödeldava faili nime
FS ja OFS Välja eraldaja ja väljundvälja eraldaja
RS ja ORS Eraldab kirje ja väljundkirjete eraldaja

Näiteks:

$ awk 'END print "Faili nimi on" FILENAME "on" NF "väljad ja" NR "records"' testFile.txt

Kasutame „END”, kuid kui kasutate „BEGIN”, annab väljund 0 välja ja 0 kirjet.

8. Kirje eraldaja muutmine:

Kirje vaikeraldur on tavaliselt tühik; kui on koma “,” või punkt “.”Kui oma eraldaja, siis kasutage koos eraldajaga valikut“ FS ”.

Tehkem veel üks fail, kus andmeväljad eraldatakse komakoolonitega “:”:

$ cat testFile2.txt
$ awk 'BEGIN FS = “:” print $ 2' testFile2.txt

Kuna faili eraldaja on koolon, kuid käsk “awk” on sellistel failidel isegi kasulik, kasutage lihtsalt valikut “FS”.

"-F" saab kasutada ka:

$ awk -F “:” ”print $ 2” testFile2.txt

Vaikimisi on kirjeeraldaja “newline” ja kirjeeraldaja määramiseks “:” kasutage:

$ awk 'BEGIN RS = “:” print $ 1' testFile2.txt

9. Awk toimingud:

Awk-toimingud on väikesed programmid, mis on ümbritsetud sulgudega „” ja millel on rohkem kui üks lause, mis on eraldatud semikoolonitega „;”.

Käsu “awk” puhul on kõige sagedamini kasutatav lause “print”. Näiteks iga kirjega teksti printimiseks kasutage jutumärkides tekstistringi:

$ awk '"See on väli," $ 2' testfail.txt

Teostame lihtsa summaoperatsiooni awk abil:

$ awk 'summa + = $ 4 LÕPP printf "% d \ n", summa' testFile.txt

10. Awk-programmi loomine:

Alustame programmeerimisega "awk", allpool toodud programmeerimine lihtsalt korrutab:

BEGIN
i = 2
samas (j<4)

print "2 korrutamine" j-ga on "i * j;
j++

Salvestage programm nimega “myCode.awk”Ja selle käivitamiseks avage terminal ja tippige:

$ awk -f myCode.awk

Järeldus:

Käsk awk on mugav käsk tekstifailide andmete töötlemiseks, skannimiseks, näiteks faili mis tahes konkreetse välja eraldamiseks; kasutame käsku “awk”. See hõlbustab tekstifailidest ükskõik millises vormis või mustris otsimist. Selles juhendis mõistame käsu awk põhitõdesid ja selle kasutamist. Käsk awk valideerib andmed, genereerib aruandeid ja isegi sõelub faile. Lihtsate käskude „awk” kasutamine võimaldab kasutajatel andmete tõhusamaks töötlemiseks kirjutada pisikesi programme.

OpenTTD vs Simutrans
Oma transpordisimulatsiooni loomine võib olla lõbus, lõõgastav ja äärmiselt köitev. Sellepärast peate endale meelepärase leidmiseks kindlasti proovima...
OpenTTD õpetus
OpenTTD on seal üks populaarsemaid ärisimulatsioonimänge. Selles mängus peate looma suurepärase transpordiettevõtte. Alustate siiski alguses umbes 190...
SuperTuxKart Linuxile
SuperTuxKart on suurepärane pealkiri, mis on loodud selleks, et tuua teie Linuxi süsteemis tasuta Mario Karti kogemus. See on päris keeruline ja lõbus...