számos segédprogram létezik a Linux operációs rendszerben, hogy szöveges adatokból vagy fájlokból készítsen jelentést. Az awk, a grep és a sed parancsok segítségével a felhasználó könnyedén végrehajthat sokféle keresést, kicserélheti és bejelentheti a generáló feladatokat. az awk nem csak parancs. Ez egy szkriptnyelv, amely mind a terminál, mind az awk fájlból használható. Támogatja a változó, feltételes kijelentés, tömb, hurkok stb. mint más szkriptnyelvek., Bármely fájltartalom sort soronként képes elolvasni, valamint elválasztani a mezőket vagy oszlopokat egy adott határoló alapján. Azt is támogatja a reguláris kifejezés keres egy adott karakterlánc a szöveges tartalom vagy fájl, és lépéseket tesz, ha bármilyen mérkőzés founds. Hogyan lehet használni awk parancs script látható ez a bemutató segítségével 20 hasznos példák.,egy

  • awk a csv-adatok
  • awk reguláris
  • awk esetben érzéketlen regex
  • awk-val nf (mezők száma) változó
  • awk gensub() függvény
  • awk-val rand() funkció
  • awk felhasználó által definiált függvény
  • awk, ha
  • awk változók
  • awk tömbök
  • awk-loop
  • awk, hogy a nyomtatás az első oszlop
  • awk nyomtatni az utolsó oszlop
  • awk a grep
  • awk a bash script fájl
  • awk-val sed
  • Az awk a printf

    printf() függvény használható formátumban, bármilyen kimenet a legtöbb programozási nyelvek., Ez a funkció az awk paranccsal különböző típusú formázott kimenetek generálására használható. az awk parancsot elsősorban bármilyen szöveges fájlhoz használják. Hozzon létre egy alkalmazott nevű szöveges fájlt.txt az alábbi tartalommal, ahol a mezőket lap választja el (“\t”).

    alkalmazott.txt

    1001 John Sena 40000
    1002 Jafar Iqbal 60000
    1003 Meher Nigar 30000
    1004 Jonny máj 70000

    a következő awk parancs az alkalmazott adatait fogja olvasni.TXT fájl soronként, majd nyomtassa ki az első iktatott formázás után. Itt a “%10s\n ” azt jelenti, hogy a kimenet 10 karakter hosszú lesz., Ha a kimenet értéke kevesebb, mint 10 karakter, akkor a szóközök az érték elején kerülnek hozzáadásra.

    $ awk ‘{ printf” %10s\n”, $1 }’ alkalmazott.txt

    kimenet:

    ugrás a tartalomra

    awk a fehér tér felosztásához

    Az alapértelmezett szó vagy mező elválasztó bármely szöveg felosztásához fehér tér. awk parancs vehet szöveg értéke bemenetként különböző módokon. A bemeneti szöveg az echo parancsból kerül átadásra a következő példában., Az “I like programming” szöveget alapértelmezés szerint elválasztó, szóköz, a harmadik szót pedig kimenetként kell kinyomtatni.

    $ echo ‘I like programming’ | awk ‘{ print $3 }’

    Output:

    awk to change the delimiter

    awk parancs lehet használni, hogy módosítsa a határoló bármilyen fájl tartalmát. Tegyük fel, hogy van egy telefon nevű szöveges fájlja.txt a következő tartalommal, ahol a”: “a fájl tartalmának mezőelválasztójaként használható.

    telefon.,txt

    +123:334:889:778
    +880:1855:456:907
    +9:7777:38644:808

    futtassa a következő awk parancsot a határoló megváltoztatásához,”: “by” – ” a fájl tartalmára, telefonra.txt.

    $ cat phone.txt
    $ awk ‘$1=$1 ‘ FS=”: “OFS=” – ” telefon.txt

    kimenet:

    Go to Content

    awk with tab-delimited data

    awk parancs számos beépített változóval rendelkezik, amelyeket a szöveg különböző módon történő olvasására használnak. Kettő közülük FS és OFS., Az FS input field separator, az OFS pedig output field separator változók. Ezen változók felhasználása ebben a részben látható. Hozzon létre egy lapon elválasztott fájlt input néven.txt a következő tartalommal az FS és OFS változók használatának teszteléséhez.

    Input.txt

    kliens oldali scripting language
    Server-side scripting language
    Database Server
    Web Server

    segítségével FS változó tab

    a következő parancs osztja minden bemeneti sort.txt fájl a lap (‘\t’) alapján, majd nyomtassa ki az egyes sorok első mezőjét.,

    $ awk ‘{ print $1 }’ FS=’\t’ bemenet.txt

    kimenet:

    az OFS változó tab

    használatával a következő awk parancs kinyomtatja az “ls-l” parancs 9.és 5. mezőjét tab elválasztóval a “név”és a” méret ” oszlop címének kinyomtatását követően. Itt, OFS változó formázza a kimenetet egy lapon.,

    $ ls-l
    $ ls-l | awk-V OFS=’\t’ ” begin { printf “%s\T%s\n”, “Name”, “Size”} {print $9,$5} ‘

    kimenet:

    ugrás a tartalomra

    awk CSV adatokkal

    bármely CSV fájl tartalma az AWK parancs használatával többféle módon értelmezhető. Hozzon létre egy CSV nevű fájlt ” ügyfél.csv ‘ a következő tartalommal az awk parancs alkalmazásához.

    ügyfél.txt

    a CSV fájl egyetlen mezőjének olvasása

    ‘-F’ opció az awk paranccsal használható a határoló beállításához a fájl minden sorának felosztásához., A következő awk parancs kiírja az ügyfél név mezőjét.csv fájl.

    $ cat ügyfél.csv
    $ awk-F “, “‘{print $2} ‘ ügyfél.csv

    kimenet:

    több mező olvasása más szöveggel kombinálva

    a következő parancs az ügyfél három mezőjét nyomtatja ki.csv kombinálásával cím Szöveg, Név, E-Mail, Telefon. Az ügyfél első sora.a csv fájl tartalmazza az egyes mezők címét. Az nr változó tartalmazza a fájl sorszámát, amikor az awk parancs elemzi a fájlt., Ebben a példában az NR változó a fájl első sorának kihagyására szolgál. A kimenet az első sor kivételével az összes sor 2., 3. és 4. mezőjét mutatja.

    $ awk-F”,”‘nr>1 {print” Name: “$2”, E-Mail: “$3”, telefon: “$4} ” ügyfél.csv

    kimenet:

    CSV fájl olvasása awk script segítségével

    awk script futtatható awk fájl. Ebben a példában látható, hogy hogyan hozhat létre awk fájlt, és hogyan futtathatja a fájlt. Hozzon létre egy fájlt nevű awkcsv.awk a következő kóddal., BEGIN kulcsszó használják a script tájékoztatására awk parancsot, hogy végre a script a BEGIN rész első végrehajtása előtt más feladatokat. Itt a mező szeparátor (FS) a hasító határoló definiálására szolgál, a 2.és 1. mező pedig a printf() függvényben használt formátum szerint kerül kinyomtatásra.

    awk
    begin {FS = “,”} {printf “%5S (%s) \ n”, $2,$1}

    futtassa az awkcsv-t.awk fájl az ügyfél tartalmával.csv fájl a következő paranccsal.

    $ awk-fkv.awk ügyfél.,csv

    kimenet:

    ugrás a tartalomra

    awk regex

    a reguláris kifejezés olyan minta, amelyet a szöveg bármely karakterláncának keresésére használnak. Különböző típusú bonyolult keresés, majd cserélje feladatokat lehet tenni nagyon könnyen segítségével a reguláris kifejezés. A reguláris kifejezés néhány egyszerű felhasználása az awk paranccsal ebben a szakaszban látható.

    Matching character set

    a következő parancs megegyezik a Fool vagy bool vagy Cool szóval a beviteli karakterlánccal, majd kinyomtatja, ha a szó megjelenik., Itt a baba nem egyezik meg, nem nyomtat.

    $ printf “Fool\nCool\nDoll\nbool” | awk ‘/ool/’

    Output:

    ‘ szimbólum a reguláris kifejezésben bármilyen minta keresésére használják a vonal kezdetén. A “Linux” szó a szöveg minden sorának kezdetén a következő példában kerül keresésre. Itt két sor kezdődik a szöveggel, a “Linux” és ez a két sor jelenik meg a kimeneten.,

    $ echo-e “Linux szabadon használható\n ez egy nyílt forráskódú szoftver\nLinuxHint
    egy népszerű blog site” | awk ‘/^Linux/’

    kimenet:

    keresés karakterlánc végén a sor

    ‘$’ szimbólum használják a reguláris kifejezés keresni bármilyen mintát a végén minden sorban a szöveg. A “Script” szót a következő példában keressük. Itt két sor tartalmazza a szót, a szkriptet a sor végén.,

    $ echo-e “PHP Script\nJavaScript\nVisual Programming” | awk ‘/Script$/’

    Output:

    kereséssel kihagyva adott karakterkészlet

    ‘^’ szimbólum jelzi a kezdő a szöveget, amikor használják előtt bármilyen karakterlánc minta ( ‘/ ^ … / ‘ ), vagy mielőtt bármilyen karakterkészlet által bejelentett ^. Ha a ” ^ ” szimbólumot a harmadik konzol belsejében használják, akkor a konzol belsejében megadott karakterkészlet a keresés időpontjában elhagyásra kerül., A következő parancs minden olyan szót keres, amely nem az ” F “- vel kezdődik, hanem az ” ool ” – val végződik. A Cool és a bool nyomtatása a minta és a szöveges adatok szerint történik.

    $ printf “Bolond\nCool\nDoll\nbool” | awk ‘/küldeni/’

    Teljesítmény:

    Ugrás a Tartalomhoz

    awk esetben érzéketlen regex

    alapértelmezés szerint, a reguláris kifejezés nem az esetben érzékeny, keresse amikor keres bármilyen minta a húr. Eset érzéketlen keresés lehet tenni awk parancsot a reguláris kifejezés., A következő példában a tolower () függvényt használjuk az érzéketlen keresés esetére. Itt a bevitt szöveg minden sorának első szava a tolower() függvény segítségével lesz kisebbbetűs, és illeszkedik a reguláris kifejezésmintához. toupper () függvény is használható erre a célra, ebben az esetben a mintát minden nagybetűvel kell meghatározni. A következő példában meghatározott szöveg két sorban tartalmazza a keresőszót, a ” web ” – et, amelyet kimenetként nyomtatnak.,

    $ echo-e “Web Design\nweb development\nFramework” | awk ‘tolower($0) ~ /^web/;’

    kimenet:

    awk with NF (number of fields) variable

    NF egy beépített változó awk parancs, amely arra szolgál, hogy megszámolja a mezők száma minden sorban a bemeneti szöveget. Hozzon létre bármilyen szöveges fájlt több sorral és több szóval. a bemenet.itt használjuk a TXT fájlt, amelyet az előző példában hoztunk létre.,

    NF használatával a

    parancssorból itt az első parancs a bemenet tartalmának megjelenítésére szolgál.a TXT fájl és a second paranccsal a fájl minden sorában lévő mezők teljes számát mutatja az NF változó használatával.

    $ cat input.txt
    $ awk ‘{print NF} ‘ input.txt

    kimenet:

    NF használatával awk fájlban

    Hozzon létre egy count nevű awk fájlt.awk a script alább megadott. Ha ez a szkript bármilyen szöveges adatokkal végrehajtásra kerül, akkor minden sor tartalmát a teljes mezőkkel nyomtatják kimenetként.

    szám.,awk

    {print $0}
    {print””}

    futtassa a szkriptet a következő paranccsal.

    $ awk-f szám.awk bemenet.txt

    Output:

    Go to Content

    awk gensub() function

    getsub() egy helyettesítési függvény, amelyet a karakterlánc keresésére használnak adott delimiter vagy reguláris kifejezésmintázat alapján. Ezt a funkciót a “gawk” csomag határozza meg, amely alapértelmezés szerint nincs telepítve. A függvény szintaxisát az alábbiakban adjuk meg., Az első paraméter tartalmaz a reguláris kifejezések mintát, vagy keres határoló, a Második paraméter tartalmazza a helyettesítő szöveget, a harmadik paraméter azt jelzi, hogy a keresés lesz az utolsó paraméter tartalmazza a szöveget, amelyben ez a funkció alkalmazni.

    szintaxis:

    gensub(regexp, csere, hogyan )

    futtassa a következő parancsot a gawk csomag telepítéséhez a getsub() függvény awk paranccsal történő használatához.

    $ sudo apt-get install gawk

    Hozzon létre egy “salesinfo” nevű szöveges fájlt.,txt ‘ a következő tartalommal a példa gyakorlásához. Itt a mezőket egy lap választja el.

    salesinfo.txt

    Mon 700000
    K 80000
    sze 750000
    Thu 200000
    p 430000
    Szo 820000

    futtassa a következő parancsot a salesinfo numerikus mezőinek olvasásához.txt fájl, majd nyomtassa ki az összes értékesítési összeg. Itt a harmadik paraméter, a ” G ” jelzi a globális keresést. Ez azt jelenti,hogy a minta a fájl teljes tartalmában keresendő.,

    $ awk ‘ { x=gensub(“\t”,””,”G”,$2); printf x “+” } END{ print 0 }’ salesinfo.txt | bc-l

    Teljesítmény:

    Ugrás a Tartalomhoz

    awk-val rand() függvény

    rand() függvény létrehozásához használt bármilyen véletlen szám nagyobb, mint 0, de kevesebb mint 1. Tehát mindig 1-nél kisebb frakcionált számot generál. A következő parancs létrehoz egy frakcionált véletlen számot, majd szorozzuk meg az értéket 10-rel, hogy több mint 1 számot kapjunk., A tizedes pont után két számjegyű frakcionált számot nyomtatnak a printf () funkció alkalmazásához. Ha többször futtatja a következő parancsot, akkor minden alkalommal különböző kimenetet kap.

    $ awk “BEGIN {printf” Number is =%.2f\n”, rand()*10}’

    kimenet:

    ugrás a tartalomra

    awk felhasználó által definiált függvény

    az előző példákban használt összes funkció beépített függvény. De akkor állapítsa meg a felhasználó által definiált funkció a awk script, hogy nem egy adott feladat., Tegyük fel, hogy egyéni funkciót szeretne létrehozni a téglalap területének kiszámításához. Ehhez a feladathoz hozzon létre egy “terület” nevű fájlt.awk ‘ a következő szkript. Ebben a példában egy area () nevű felhasználó által definiált függvény jelenik meg a szkriptben, amely a beviteli paraméterek alapján kiszámítja a területet, majd visszaadja a terület értékét. a getline parancsot itt használják a felhasználó bevitelére.

    terület.awk

    futtassa a szkriptet.

    $ awk-f terület.,awk

    Output:

    Go to Content

    awk if example

    awk supports conditional statements like other standard programming languages. Az if kimutatások három típusa jelenik meg ebben a szakaszban három példa segítségével. Hozzon létre egy elem nevű szöveges fájlt.txt a következő tartalommal.

    tételek.txt

    HDD Samsung $100
    egér A4Tech
    nyomtató HP $200

    egyszerű, ha például:

    a következő parancs elolvassa az elemek tartalmát.TXT fájl, majd ellenőrizze a 3. mező értéke minden sorban., Ha az érték üres, akkor hibaüzenetet nyomtat a sorszámmal.

    $ awk ‘{ if ($3==””) print “Ár mező hiányzik a sorban” nr} ” tételek.txt

    kimenet:

    if-else példa:

    a következő parancs kinyomtatja az elem árát, ha a 3.mező létezik a sorban, különben hibaüzenetet nyomtat.

    $ awk ‘{ if ($3 == “”) print “Ár mező hiányzik”
    else print “tétel ára” $3} ” tétel.,txt

    kimenet:

    if-else-if példa:

    amikor a következő parancs végrehajtásra kerül a terminálról, akkor a felhasználó bemenetet kap. A bemeneti értéket minden if feltételhez hasonlítjuk, amíg a feltétel igaz. Ha bármely feltétel valóra válik, akkor kinyomtatja a megfelelő fokozatot. Ha a bemeneti érték nem felel meg semmilyen feltételnek, akkor a nyomtatás sikertelen lesz.,

    $ awk ‘BEGIN { print “adja meg a jelet:”
    végzünk mark < “-“
    ha (mark >= 90) print “A+”
    else if( mark >= 80) print “Egy”
    else if( mark >= 70) print “B+”
    más print “Sikertelen” }’

    Teljesítmény:

    Ugrás a Tartalomhoz

    awk változók

    A nyilatkozat awk változó hasonló a nyilatkozat a shell változó. Különbség van a változó értékének olvasásában., a ‘ $ ‘ szimbólumot a shell változó nevével együtt használjuk az érték olvasásához. De nincs szükség, hogy a ” $ ” awk változó olvasni az értéket.

    egyszerű változóval:

    a következő parancs egy “site” nevű változót deklarál, és egy karakterlánc értéket rendel hozzá a változóhoz. A változó értékét a következő utasítás tartalmazza.

    $ awk ‘BEGIN{ site=” LinuxHint.,com”; print site}’

    Output:

    változó használatával adatokat nyerhet egy

    fájlból a következő parancs a “nyomtató” szót keresi a fájlelemekben.txt. Ha a fájl bármely sora “nyomtatóval” kezdődik, akkor az 1., 2. és 3. mező értékét három változóba tárolja. a név és az árváltozók nyomtatásra kerülnek.

    $ awk ‘ / Printer / { name = $1; brand = $2;price=$3; print “item name=” name;
    print “item price=” price} ” items.,txt

    kimenet:

    ugrás a tartalomra

    awk tömbök

    mind a numerikus, mind a kapcsolódó tömbök használhatók awk-ban. Array változó nyilatkozat awk ugyanaz, mint más programozási nyelvek. A tömbök egyes felhasználási módjai ebben a részben jelennek meg.

    asszociatív tömb:

    a tömb indexe az asszociatív tömb bármely karakterlánca lesz. Ebben a példában egy három elemből álló asszociatív tömböt deklarálnak és kinyomtatnak.,

    kimenet:

    numerikus tömb:

    három elemből álló numerikus tömböt deklarálnak és kinyomtatnak a lap elválasztásával.

    kimenet:

    ugrás a tartalomra

    awk loop

    három típusú hurkot támogat az awk. Ezeknek a hurkoknak a használatát itt három példa segítségével mutatjuk be.

    while loop:

    while loop that is used in the following command will iterate for 5 times and exit from the loop for break statement.,

    $ awk ‘BEGIN { n = 1; míg (n <= 10) { if(n > 5) break; print n; n++ } }’

    Teljesítmény:

    A hurok:

    A hurok, hogy használják az alábbi awk parancs számolja ki az összeget, 1-től 10-ig, majd nyomtassa ki az értéket.,

    $ awk ‘begin { sum=0; for (n = 1; n <= 10; n++) sum=sum+n; print sum }’

    Output:

    Do-While Loop:

    A do-while loop a következő paranccsal minden páros számot kinyomtatunk 10-től 5-ig.,

    $ awk ‘BEGIN {counter = 10; do { if (counter%2 =0) print counter; counter– }
    while (counter > 5) }’

    Output:

    ugrás a tartalomra

    awk az első oszlop nyomtatásához

    bármely fájl első oszlopa kinyomtatható az AWK $1 változójának használatával. De ha az első oszlop értéke több szót tartalmaz, akkor csak az első oszlop első szava nyomtat. Egy adott határoló használatával az első oszlop megfelelően nyomtatható. Hozzon létre egy diák nevű szöveges fájlt.,txt a következő tartalommal. Itt az első oszlop két szó szövegét tartalmazza.

    diákok.,txt

    Kaniz Fatema 30<sup>th</sup> batch
    Abir Hossain 35<sup>th</sup> batch
    John Abraham 40<sup>th</sup> batch

    Run awk command without any delimiter. The first part of the first column will be printed.,

    $ awk ‘{print $1}’ diákok.txt

    futtassa az awk parancsot a következő határolóval. Az első oszlop teljes része kinyomtatásra kerül.

    $ awk-F ‘\\S\\s’ ” {print $1} ‘ diákok.txt

    kimenet:

    ugrás a tartalomra

    awk az utolsó oszlop kinyomtatásához

    $(NF) változó használható bármely fájl utolsó oszlopának kinyomtatásához. A következő awk parancsok nyomtatják ki a hallgatók utolsó oszlopának utolsó részét és teljes részét.txt fájl.,

    $ awk ‘{print $(NF)}’ diákok.txt
    $ awk-F ‘\\s\ \ s’ ‘{print $(NF)} ‘ diákok.txt

    kimenet:

    ugrás a tartalomra

    awk a grep

    grep egy másik hasznos parancs a Linux számára, hogy bármilyen szabályos kifejezés alapján keressen tartalmat egy fájlban. A következő példában látható, hogy mind az awk, mind a grep parancsok együtt használhatók. a grep parancs a munkavállaló azonosítójának, az “1002” – nek a munkavállalótól származó információinak keresésére szolgál.txt fájl. A grep parancs kimenete bemeneti adatként kerül elküldésre az awk-nak., Az 5% – os bónuszt az awk command ‘1002’ személyi igazolványa alapján számolják és nyomtatják ki.

    $ Cat alkalmazott.txt
    $ grep ‘1002’ alkalmazott.txt / awk-F’ \t ‘{ print $2 ” kap $” ($3*5)/100 “bónusz”}’

    kimenet:

    Go to Content

    awk with bash file

    mint más Linux parancs, awk parancs is használható egy BASH script. Hozzon létre egy customers nevű szöveges fájlt.txt a következő tartalommal. A fájl minden sora négy mezőre vonatkozó információkat tartalmaz., Ezek az ügyfél azonosítója, neve, címe és mobilszáma, amelyeket ” / ” választ el egymástól.

    ügyfelek.txt

    Hozzon létre egy item_search nevű Bash fájlt.bash a következő script. A szkript szerint az állami értéket a felhasználótól veszik át, majd az ügyfelekben keresik.txt fájl grep parancs, majd át az awk parancsot bemenetként. Az Awk parancs minden sor 2. és 4. mezőjét olvassa el. Ha a bemeneti érték megegyezik az ügyfelek bármely állami értékével.txt fájl akkor kinyomtatja az ügyfél nevét és mobilszámát, ellenkező esetben kinyomtatja a “nem található ügyfél”üzenetet.,

    item_search.bash

    futtassa a következő parancsokat a kimenetek megjelenítéséhez.

    $ Cat ügyfelek.txt
    $ bash item_search.bash

    kimenet:

    ugrás a tartalomra

    awk a sed

    egy másik hasznos kereső eszköz a Linux sed. Ez a parancs használható mind a fájl szövegének keresésére, mind cseréjére. A következő példa az awk parancs használatát mutatja sed paranccsal. Itt a sed parancs megkeresi az összes alkalmazott nevét ” J ” – vel, majd bemenetként átadja az awk parancsot., az awk a formázás után kinyomtatja az alkalmazott nevét és azonosítóját.

    $ Cat alkalmazott.txt
    $ sed-n ‘/J / p ‘ alkalmazott.txt / awk-F’ \t ‘{ printf “%S (%s) \ n”, $2, $1 }’

    kimenet:

    ugrás a tartalomra

    következtetés:

    az adatok megfelelő szűrése után az awk paranccsal különböző típusú jelentéseket hozhat létre bármilyen táblázatos vagy elhatárolt adat alapján. Remélem, hogy megtanulhatja, hogyan működik az awk parancs az ebben a bemutatóban bemutatott példák gyakorlása után.

    Articles

    Vélemény, hozzászólás?

    Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük