Linux -käyttöjärjestelmässä on monia apuohjelmia työkalujen etsimiseen ja raportin luomiseen tekstidatasta tai tiedostosta. Käyttäjä voi helposti suorittaa monenlaisia hakuja, korvauksia ja raporttien luontitehtäviä käyttämällä awk-, grep- ja sed -komentoja. awk ei ole vain käsky. Se on skriptikieli, jota voidaan käyttää sekä pääte- että awk -tiedostosta. Se tukee muuttujaa, ehdollista lauseketta, matriisia, silmukoita jne. Kuten muutkin skriptikielet. Se voi lukea minkä tahansa tiedoston sisällön rivi riviltä ja erottaa kentät tai sarakkeet tietyn rajaajan perusteella. Se tukee myös säännöllistä lauseketta tietyn merkkijonon etsimiseksi tekstisisällöstä tai tiedostosta ja suorittaa toimenpiteitä, jos osumaa löytyy. Kuinka voit käyttää awk -komentoa ja komentosarjaa, esitetään tässä opetusohjelmassa käyttämällä 20 hyödyllistä esimerkkiä.
Sisällys:
- awk printf kanssa
- awk jakaa valkoiselle avaruudelle
- awk vaihtaa erotinta
- awk, jossa on sarkaimella erotetut tiedot
- awk csv -tietojen kanssa
- awk regex
- awk kirjainkoko ei ole herkkä
- awk, jossa on muuttuja nf (kenttien määrä)
- awk gensub () -toiminto
- awk rand () -funktiolla
- awk käyttäjän määrittämä toiminto
- awk jos
- awk muuttujia
- awk -taulukot
- awk silmukka
- awk tulostaa ensimmäisen sarakkeen
- awk tulostaa viimeisen sarakkeen
- awk grepin kanssa
- awk bash -komentotiedoston kanssa
- awk sedin kanssa
Awk: n käyttäminen printf: n kanssa
printf () -toimintoa käytetään minkä tahansa tuloksen muotoiluun useimmissa ohjelmointikielissä. Tätä toimintoa voidaan käyttää yhdessä awk komento luoda erilaisia muotoiltuja lähdöjä. awk -komentoa käytetään pääasiassa mihin tahansa tekstitiedostoon. Luo tekstitiedosto nimeltä työntekijä.txt alla olevan sisällön kanssa, jossa kentät on erotettu sarkaimella (' t').
työntekijä.txt
1001 John sena 40000
1002 Jafar Iqbal 60000
1003 Meher Nigar 30000
1004 Jonny Liver 70000
Seuraava awk -komento lukee tietoja työntekijä.txt tiedosto rivi riviltä ja tulosta ensimmäinen arkistoinnin jälkeen. Tässä, %10s n tarkoittaa, että tulostus on 10 merkkiä pitkä. Jos tulosteen arvo on alle 10 merkkiä, välilyönnit lisätään arvon eteen.
$ awk'{printf'%10s n', 1 $'työntekijä.txt
Lähtö:
awk jakaa valkoiselle avaruudelle
Tekstin jakamisen oletusarvoinen sanojen tai kenttien erotin on välilyönti. awk -komento voi ottaa tekstiarvon syötteeksi eri tavoin. Syötetty teksti välitetään heitti pois komento seuraavassa esimerkissä. Teksti, ' Tykkään ohjelmoinnista Jaetaan oletuserottimella, tilaa , ja kolmas sana tulostetaan tulostuksena.
$heitti pois 'Pidän ohjelmoinnista' | awk '{print $ 3}'Lähtö:
awk vaihtaa erotinta
awk -komennolla voidaan muuttaa minkä tahansa tiedoston sisällön erotinta. Oletetaan, että sinulla on tekstitiedosto nimeltä phone.txt seuraavan sisällön kanssa, jossa ”:” on tiedoston sisällön kenttäerotin.
phone.txt
+123: 334: 889: 778+880: 1855: 456: 907
+9: 7777: 38644: 808
Suorita seuraava awk -komento erottimen vaihtamiseksi, ':' käyttäjältä '-' tiedoston sisältöön, phone.txt .
$ cat phone.txt$ awk '$ 1 = $ 1' FS = ':' OFS = '-' phone.txt
Lähtö:
awk, jossa on sarkaimella erotetut tiedot
awk-komennossa on monia sisäänrakennettuja muuttujia, joita käytetään tekstin lukemiseen eri tavoin. Kaksi heistä ovat FS ja OFS . FS on syöttökenttien erotin ja OFS on tulostuskenttien erotinmuuttujat. Näiden muuttujien käyttö on esitetty tässä osiossa. Luo välilehti erillinen tiedosto nimeltä input.txt seuraavan sisällön kanssa testataksesi niiden käyttöä FS ja OFS muuttujia.
Input.txt
Asiakaspuolen skriptikieliPalvelinpuolen skriptikieli
Tietokantapalvelin
Verkkopalvelin
FS -muuttujan käyttäminen välilehdellä
Seuraava komento jakaa jokaisen rivin input.txt tiedosto välilehden perusteella (' t') ja tulosta jokaisen rivin ensimmäinen kenttä.
$awk '{print $ 1}' FS=' t'input.txtLähtö:
OFS -muuttujan käyttö välilehdellä
Seuraava awk -komento tulostaa 9th ja 5th kentät 'Ls -l' sarakkeen otsikon tulostamisen jälkeen komennon tulostus sarkainerottimella Nimi ja Koko . Tässä, OFS muuttujaa käytetään tuloksen muotoiluun välilehdellä.
$ls -he$ls -he | awk -v OFS=' t' 'BEGIN {printf'%s t%s n ',' Name ',' Size '} {print $ 9, $ 5}'
Lähtö:
awk CSV -tietojen kanssa
Minkä tahansa CSV -tiedoston sisältö voidaan jäsentää useilla tavoilla käyttämällä awk -komentoa. Luo CSV -tiedosto nimeltä ' asiakas.csv 'Seuraavalla sisällöllä soveltaaksesi awk -komentoa.
customer.txt
Tunnus, nimi, sähköposti, puhelin1, Sophia, [email protected], (862) 478-7263
2, Amelia, [email protected], (530) 764-8000
3, Emma, [email protected], (542) 986-2390
Luetaan CSV -tiedoston yksittäistä kenttää
'-F' -vaihtoehtoa käytetään awk -komennolla, kun halutaan asettaa erotin tiedoston jokaisen rivin jakamiseen. Seuraava awk -komento tulostaa nimi kenttä asiakas.csv tiedosto.
$kissaasiakas.csv$awk -F ',' '{print $ 2}'asiakas.csv
Lähtö:
Useiden kenttien lukeminen yhdistämällä muuta tekstiä
Seuraava komento tulostaa kolme kenttää asiakas.csv yhdistämällä otsikkoteksti, Nimi, sähköposti ja puhelin . Ensimmäinen rivi asiakas.csv tiedosto sisältää kunkin kentän otsikon. EI muuttuja sisältää tiedoston rivinumeron, kun awk -komento jäsentää tiedoston. Tässä esimerkissä NR muuttujaa käytetään jättämään tiedoston ensimmäinen rivi pois. Tulos näyttää 2toinen, 3rdja 4thkaikkien rivien kentät paitsi ensimmäinen rivi.
$awk -F ',' 'NR> 1 {print' Name: '$ 2', Email: '$ 3', Phone: '$ 4}'asiakas.csvLähtö:
CSV -tiedoston lukeminen awk -komentosarjan avulla
awk -skripti voidaan suorittaa suorittamalla awk -tiedosto. Tässä esimerkissä näytetään, kuinka voit luoda awk -tiedoston ja suorittaa tiedoston. Luo tiedosto nimeltä awkcsv.awk seuraavalla koodilla. ALKAA avainsanaa käytetään komentosarjassa ilmoittamaan awk -komennolle suorittaakseen komentosarjan ALKAA osa ennen muiden tehtävien suorittamista. Tässä kenttäerotin ( FS ) käytetään halkaisijaerottimen määrittämiseen ja 2toinenja 1stkentät tulostetaan printf () -toiminnossa käytetyn muodon mukaisesti.
awkcsv.awkALKAA{FS= ','} { printf '% 5s (% s) n'',$2,$1}
Juosta awkcsv.awk tiedosto, jonka sisältö on asiakas.csv tiedosto seuraavalla komennolla.
$awk -fawkcsv.awk customer.csvLähtö:
awk regex
Säännöllinen lauseke on malli, jota käytetään tekstin minkä tahansa merkkijonon etsimiseen. Erilaisia monimutkaisia haku- ja korvaustehtäviä voidaan tehdä erittäin helposti käyttämällä säännöllistä lauseketta. Tässä osassa esitetään muutamia yksinkertaisia säännöllisen lausekkeen käyttötapoja awk -komennolla.
Vastaava hahmoasetaSeuraava komento vastaa sanaa Hölmö tai huijaus tai Viileä syöttöjonolla ja tulosta, jos sana löytyy. Tässä, Nukke ei täsmää eikä tulostu.
$printf 'Tyhmä nViileä nNukke nhöpö | awk '/[FbC] ool/'Lähtö:
Haetaan merkkijonoa rivin alussa
'^' -symbolia käytetään säännöllisessä lausekkeessa haettaessa mitä tahansa mallia rivin alussa. ' Linux ' sanaa haetaan seuraavan esimerkin tekstirivin alussa. Tässä kaksi riviä alkaa tekstillä, 'Linux Ja nämä kaksi riviä näytetään tulostuksessa.
$heitti pois -Ja 'Linux on ilmainen nSe on avoimen lähdekoodin ohjelmisto nLinuxHint onsuosittu blogisivusto ' | awk '/^Linux/'
Lähtö:
Haetaan merkkijonoa rivin lopussa
'$' -symbolia käytetään säännöllisessä lausekkeessa etsimään mitä tahansa mallia tekstin jokaisen rivin lopussa. ' Käsikirjoitus ’Sanaa haetaan seuraavassa esimerkissä. Tässä kahdella rivillä on sana, Käsikirjoitus rivin lopussa.
$heitti pois -Ja 'PHP -skripti nJavaScript nVisuaalinen ohjelmointi ' | awk '/Käsikirjoitus $/'Lähtö:
Haku jättämällä pois tietty merkistö
'^' symboli osoittaa tekstin alun, kun sitä käytetään minkä tahansa merkkijonokuvion edessä (' / ^… /') tai ennen mitä tahansa merkistön ilmoittamaa merkistöä ^ […] . Jos '^' -symbolia käytetään kolmannen hakasulkeen sisällä, [^…], sitten hakasulkeessa oleva määritetty merkistö jätetään pois haun yhteydessä. Seuraava komento etsii mitä tahansa sanaa, joka ei ala 'F' mutta päättyy ' ool ''. Viileä ja bool tulostetaan kuvion ja tekstitietojen mukaan.
$ printf 'Tyhmä nViileä nNukke nhöpö |awk' / [^ F] ool /'Lähtö:
awk kirjainkoko ei ole herkkä
Oletuksena säännöllinen lauseke tekee kirjainkoolla merkitsevän haun, kun etsit mitä tahansa merkkijonon mallia. Kirjainkoon erottamaton haku voidaan tehdä awk -komennolla säännöllisellä lausekkeella. Seuraavassa esimerkissä laskea() -toimintoa käytetään etsimään kirjainkoolla merkitystä. Tässä syöttötekstin jokaisen rivin ensimmäinen sana muunnetaan pieniksi kirjaimilla käyttämällä laskea() toiminto ja vastaa säännöllistä lausekemallia. ylös () toimintoa voidaan käyttää myös tähän tarkoitukseen, tässä tapauksessa kuvio on määritettävä isoilla kirjaimilla. Seuraavassa esimerkissä määritelty teksti sisältää hakusanan, 'Verkko ”Kahdella rivillä, jotka tulostetaan tulostuksena.
$heitti pois -Ja 'Web-suunnittelu nverkkokehitys nPuitteet ' | awk 'laske ($ 0) ~ /^web /;'Lähtö:
awk NF (kenttämäärä) -muuttujalla
NF on sisäänrakennettu awk-komennon muuttuja, jota käytetään laskemaan syöttökirjan jokaisen rivin kenttien kokonaismäärä. Luo mikä tahansa tekstitiedosto, jossa on useita rivejä ja useita sanoja. input.txt Tässä käytetään edellisessä esimerkissä luotua tiedostoa.
NF: n käyttäminen komentoriviltä
Tässä ensimmäistä komentoa käytetään sisällön näyttämiseen input.txt tiedostoa ja toista komentoa käytetään kenttien kokonaismäärän näyttämiseen tiedoston jokaisella rivillä käyttäen NF muuttuja.
$ cat input.txt$ awk '{print NF}' input.txt
Lähtö:
NF: n käyttö awk -tiedostossa
Luo awk -tiedosto nimeltä count.wak alla olevan käsikirjoituksen kanssa. Kun tämä komentosarja suoritetaan millä tahansa tekstidatalla, jokainen rivin sisältö, jossa on yhteensä kenttiä, tulostetaan tulostuksena.
count.wak
{tulosta $0}{Tulosta'[Yhteensä kenttiä:'NF']'}
Suorita komentosarja seuraavalla komennolla.
$awk -fcount.awk input.txtLähtö:
awk gensub () -toiminto
getub () on korvausfunktio, jota käytetään merkkijonon etsimiseen tietyn erotin- tai säännöllisen lausekemallin perusteella. Tämä toiminto on määritelty kohdassa 'Kurkku' paketti, jota ei ole asennettu oletuksena. Tämän toiminnon syntaksi on annettu alla. Ensimmäinen parametri sisältää säännöllisen lausekemallin tai hakuerottimen, toinen parametri sisältää korvaavan tekstin, kolmas parametri osoittaa, miten haku tehdään ja viimeinen parametri sisältää tekstin, jossa tätä toimintoa käytetään.
Syntaksi:
gensub(regexp, korvaaminen, miten[, kohde])Suorita seuraava komento asentaaksesi kurkku paketti käyttöön getub () toiminto awk -komennolla.
$ sudo apt-get install gawkLuo tekstitiedosto nimeltä ' salesinfo.txt 'Seuraavan sisällön avulla tämän esimerkin harjoittamiseksi. Tässä kentät on erotettu välilehdellä.
salesinfo.txt
Minun 700 000Sinun 800 000
Ke 750000
Kerää 200 000
Pe 430000
La 820000
Suorita seuraava komento lukeaksesi numerokentät salesinfo.txt tiedosto ja tulosta koko myyntimäärä. Tässä kolmas parametri 'G' osoittaa maailmanlaajuista hakua. Tämä tarkoittaa, että mallia etsitään tiedoston koko sisällöstä.
$awk '{x = gensub (' t ',' ',' G ', 2 dollaria); printf x '+'} END {print 0} 'salesinfo.txt| bc -heLähtö:
awk rand () -funktiolla
rivi() -funktiota käytetään minkä tahansa satunnaisluvun muodostamiseen, joka on suurempi kuin 0 ja pienempi kuin 1. Joten se luo aina murtoluvun, joka on pienempi kuin 1. Seuraava komento luo murto -osan satunnaisluvun ja kertoa arvon 10: llä saadaksesi luvun enemmän kuin 1. Murtoluku, jossa on kaksi numeroa desimaalipilkun jälkeen, tulostetaan printf () -toiminnon käyttämiseksi. Jos suoritat seuraavan komennon useita kertoja, saat erilaisen tuloksen joka kerta.
$awk 'BEGIN {printf' Luku on =%. 2f n ', rand ()*10}'Lähtö:
awk käyttäjän määrittämä toiminto
Kaikki edellisissä esimerkeissä käytetyt toiminnot ovat sisäänrakennettuja toimintoja. Mutta voit ilmoittaa käyttäjän määrittämän toiminnon awk-komentosarjassasi suorittamaan minkä tahansa tietyn tehtävän. Oletetaan, että haluat luoda mukautetun funktion suorakulmion alueen laskemiseksi. Voit tehdä tämän tehtävän luomalla tiedoston nimeltä ' alue. wak 'Seuraavalla käsikirjoituksella. Tässä esimerkissä käyttäjän määrittämä toiminto nimeltä alue () ilmoitetaan komentosarjassa, joka laskee alueen syöttöparametrien perusteella ja palauttaa alueen arvon. getline komentoa käytetään tässä syötteen vastaanottamiseen käyttäjältä.
alue. wak
# Laske aluetoimintoalueella(korkeus,leveys){
palatakorkeus*leveys
}
# Aloittaa suorituksen
ALKAA{
Tulosta'Syötä korkeuden arvo:'
getline h< '-'
Tulosta'Kirjoita leveyden arvo:'
getline w< '-'
Tulosta'Alue ='alueella(h,sisään)
}
Suorita komentosarja.
$awk -falue. wakLähtö:
awk jos esimerkki
awk tukee ehdollisia lausuntoja, kuten muutkin vakio -ohjelmointikielet. Tässä osassa esitetään kolmenlaisia if -lauseita käyttämällä kolmea esimerkkiä. Luo tekstitiedosto nimeltä items.txt seuraavan sisällön kanssa.
items.txt
Kiintolevy Samsung 100 dollariaHiiri A4Tech
Tulostin HP 200 dollaria
Yksinkertaista jos esimerkki :
seuraava komento lukee items.txt tiedosto ja tarkista 3rd kentän arvo jokaisella rivillä. Jos arvo on tyhjä, se tulostaa virheilmoituksen rivinumerolla.
$awk '{if ($ 3 ==' ') print' Hintakenttä puuttuu riviltä 'NR}'items.txtLähtö:
jos-muu esimerkki:
Seuraava komento tulostaa tuotteen hinnan, jos 3rd-kenttä on rivillä, muuten se tulostaa virheilmoituksen.
$ awk'{if ($ 3 ==' ') print' Hinta -kenttä puuttuu 'muuten tulosta 'tuotteen hinta on' $ 3} 'kohteita.txt
Lähtö:
jos-muut-jos esimerkki:
Kun seuraava komento suoritetaan päätelaitteesta, se ottaa syötteen käyttäjältä. Syöttöarvoa verrataan jokaiseen if -ehtoon, kunnes ehto on tosi. Jos jokin ehto täyttyy, se tulostaa vastaavan arvosanan. Jos tuloarvo ei vastaa mitään ehtoa, tulostus epäonnistuu.
$awk 'BEGIN {print' Anna merkki: 'getline -merkki<'-'
jos (merkki> = 90) tulosta 'A+'
muuten jos (merkki> = 80) tulosta 'A'
muuten jos (merkki> = 70) tulosta 'B+'
muuten tulosta 'Epäonnistunut'} '
Lähtö:
awk muuttujia
Awk -muuttujan ilmoitus on samanlainen kuin shell -muuttujan ilmoitus. Muuttujan arvon lukemisessa on ero. $ -Merkkiä käytetään shell -muuttujan muuttujan nimen kanssa arvon lukemiseen. Mutta arvon '' $ '' käyttämistä awk -muuttujan kanssa ei tarvitse käyttää arvon lukemiseen.
Yksinkertaisen muuttujan käyttö:
Seuraava komento ilmoittaa muuttujan nimeltä 'Sivusto' ja merkkijonoarvo määritetään kyseiselle muuttujalle. Muuttujan arvo tulostetaan seuraavassa lauseessa.
$awk 'BEGIN {site =' LinuxHint.com '; tulostussivusto} 'Lähtö:
Muuttujan käyttäminen tietojen noutamiseen tiedostosta
Seuraava komento etsii sanaa 'Tulostin' tiedostossa items.txt . Jos jokin tiedoston rivi alkaa 'Tulostin 'Sitten se tallentaa arvon 1st , 2toinen ja 3rd kentät kolmeen muuttujaan. nimi ja hinta muuttujat tulostetaan.
$ awk'/ Tulostin/ {name = $ 1; brand = $ 2; price = $ 3; print' item name = 'name;print 'item price =' price} 'kohteita.txt
Lähtö:
awk -taulukot
Sekä numeerisia että niihin liittyviä matriiseja voidaan käyttää awk: ssa. Matriisimuuttujan ilmoitus awk: ssa on sama kuin muilla ohjelmointikielillä. Joitakin matriisien käyttötapoja on esitetty tässä osassa.
Assosiatiivinen järjestelmä:
Taulukon indeksi on mikä tahansa assosiatiivisen taulukon merkkijono. Tässä esimerkissä kolmen elementin assosiatiivinen ryhmä ilmoitetaan ja tulostetaan.
$awk 'ALKAA {books ['Web Design'] = 'Oppiminen HTML 5';
books ['Web Programming'] = 'PHP ja MySQL'
kirjat ['PHP Framework'] = 'Learning Laravel 5'
printf '%s n%s n%s n', kirjat ['Web -suunnittelu'], kirjat ['Web -ohjelmointi'],
kirjat ['PHP Framework']} '
Lähtö:
Numeerinen taulukko:
Kolmen elementin numeerinen taulukko ilmoitetaan ja tulostetaan erottamalla välilehti.
$ awk'ALKAA {numero [0] = 80;
numero [1] = 55;
numero [2] = 76;
# tulostetaulukkoelementtiä
printf 'Taulukon arvot: %d t%d t%d n', numero [0], numero [1], numero [2]; } '
Lähtö:
awk silmukka
Awk tukee kolmen tyyppisiä silmukoita. Näiden silmukoiden käyttö on esitetty tässä käyttämällä kolmea esimerkkiä.
Silmukan ollessa:
kun seuraavassa komennossa käytetty silmukka iteroi 5 kertaa ja poistuu silmukasta taukolausetta varten.
$ awk 'ALKAA {n = 1; kun (n 5) tauko; tulosta n; n ++}} 'Lähtö:
Silmukka:
Seuraavassa awk -komennossa käytettävä silmukka laskee summan 1-10 ja tulostaa arvon.
$awk 'ALKAA {summa = 0; varten (n = 1; n<= 10; n++) sum=sum+n; print sum }'Lähtö:
Do-while-silmukka:
seuraavan komennon to-while-silmukka tulostaa kaikki parilliset luvut 10: stä 5: een.
$awk 'ALKAA {laskuri = 10; tee {jos (laskuri%2 == 0) tulosta laskuri; laskuri-- }samalla (laskuri> 5)} '
Lähtö:
awk tulostaa ensimmäisen sarakkeen
Minkä tahansa tiedoston ensimmäinen sarake voidaan tulostaa käyttämällä $ 1 -muuttujaa awk: ssa. Mutta jos ensimmäisen sarakkeen arvo sisältää useita sanoja, tulostetaan vain ensimmäisen sarakkeen ensimmäinen sana. Tietyn rajaajan avulla ensimmäinen sarake voidaan tulostaa oikein. Luo tekstitiedosto nimeltä student.txt seuraavan sisällön kanssa. Tässä ensimmäinen sarake sisältää kahden sanan tekstin.
Students.txt
Kaniz Fatema 30theräAbir Hossain 35therä
Johannes Abraham 40therä
Suorita awk -komento ilman erotinta. Ensimmäisen sarakkeen ensimmäinen osa tulostetaan.
$awk '{print $ 1}'student.txtSuorita awk -komento seuraavalla erotimella. Ensimmäisen sarakkeen koko osa tulostetaan.
$awk -F '\ s \ s' '{print $ 1}'student.txtLähtö:
awk tulostaa viimeisen sarakkeen
$ (NF) muuttujaa voidaan käyttää minkä tahansa tiedoston viimeisen sarakkeen tulostamiseen. Seuraavat awk -komennot tulostavat viimeisen osan ja koko osan viimeisestä sarakkeesta opiskelijat.txt tiedosto.
$awk '{print $ (NF)}'student.txt$awk -F '\ s \ s' '{print $ (NF)}'student.txt
Lähtö:
awk grepin kanssa
grep on toinen hyödyllinen Linux -komento etsiä tiedoston sisältöä minkä tahansa säännöllisen lausekkeen perusteella. Seuraavassa esimerkissä näytetään, kuinka sekä awk- että grep -komentoja voidaan käyttää yhdessä. pito komentoa käytetään työntekijän tunnuksen tietojen etsimiseen, ' 1002 'Alkaen työntekijä.txt tiedosto. Grep -komennon tulos lähetetään awk: iin syöttötiedoina. 5% bonus lasketaan ja tulostetaan työntekijän tunnuksen palkan perusteella, ' 1002 ' awk -komennolla.
$kissatyöntekijä.txt$pito '1002'työntekijä.txt| awk -F ' t' '{print $ 2' saa $ '($ 3*5)/100' bonuksen '}'
Lähtö:
awk BASH -tiedoston kanssa
Kuten muita Linux -komentoja, awk -komentoa voidaan käyttää myös BASH -komentosarjassa. Luo tekstitiedosto nimeltä customers.txt seuraavan sisällön kanssa. Tämän tiedoston jokainen rivi sisältää tietoja neljästä kentästä. Nämä ovat asiakkaan tunnus, nimi, osoite ja matkapuhelinnumero, jotka erotetaan toisistaan ’/ ''.
customers.txt
AL4934 / Charles M Brunner / 4838 Beeghley Street, Huntsville, Alabama / 256-671-7942CA5455 / Virginia S Mota / 930 Bassel Street, VALLECITO, Kalifornia / 415-679-5908
IL4855 / Ann A Neale / 1932 Patterson Fork Road, Chicago, Illinois / 773-550-5107
Luo bash -tiedosto nimeltä item_search.bash seuraavan käsikirjoituksen kanssa. Tämän skriptin mukaan tila -arvo otetaan käyttäjältä ja haetaan customers.txt tiedoston tekijä pito komento ja välitettiin awk -komennolle syötteeksi. Awk -komento lukee 2toinen ja 4th kunkin rivin kentät. Jos tuloarvo vastaa mitä tahansa tila -arvoa customers.txt tiedoston, se tulostaa asiakkaan nimi ja matkapuhelinnumero , muuten se tulostaa viestin Asiakkaita ei löytynyt .
item_search.bash
#!/bin/bashheitti pois 'Kirjoita osavaltion nimi:'
lukeaosavaltio
Asiakkaat=``pito ''$ osavaltio''customers.txt| awk -F '/' '{print' Asiakkaan nimi: '$ 2,',
Matkapuhelinnumero: $ 4}``
jos [ ''$ asiakkaat'' !='' ];sitten
heitti pois $ asiakkaat
muu
heitti pois 'Asiakkaita ei löytynyt'
olla
Suorita seuraavat komennot näyttääksesi lähdöt.
$kissacustomers.txt$lyödäitem_search.bash
Lähtö:
awk sedin kanssa
Toinen hyödyllinen Linuxin hakutyökalu on sed . Tätä komentoa voidaan käyttää minkä tahansa tiedoston etsimiseen ja tekstin korvaamiseen. Seuraava esimerkki näyttää awk -komennon käytön sed komento. Täällä sed -komento etsii kaikkien työntekijöiden nimet ja alkaa ' J 'Ja siirtyy syötteeksi awk -komentoon. awk tulostaa työntekijän nimi ja ID alustamisen jälkeen.
$kissatyöntekijä.txt$sed -n '/J/p'työntekijä.txt| awk -F ' t' '{printf'%s (%s) n ', $ 2, $ 1}'
Lähtö:
Johtopäätös:
Voit käyttää awk -komentoa luodaksesi erityyppisiä raportteja minkä tahansa taulukko- tai rajatun datan perusteella tietojen suodattamisen jälkeen. Toivottavasti voit oppia, kuinka awk -komento toimii, kun olet harjoitellut tässä opetusohjelmassa esitettyjä esimerkkejä.