Vahekaartidega eraldatud failis kasutatakse eraldajat 'sakk'. Seda tüüpi tekstifail on loodud mitmesuguste tekstiandmete struktureeritud vormingus salvestamiseks. Seda tüüpi failide sõelumiseks on Linuxis olemas erinevat tüüpi käsud. 'awk' on üks viise tabulaatoriga eraldatud faili erineval viisil sõelumiseks. Selles õpetuses on näidatud käsu 'awk' kasutamine sakkidega eraldatud faili lugemiseks.
Looge tabulaatoriga eraldatud fail:
Looge nimega tekstifail kasutajad.txt järgmise sisuga selle õpetuse käskude testimiseks. See fail sisaldab kasutaja nime, e-posti aadressi, kasutajanime ja parooli.
kasutajad.txt
Nimi E-posti kasutajanimi ParoolMd. Robin [meiliga kaitstud] robin89 563425
Nila Hasan [meiliga kaitstud] nila78 245667
Mirza Abbas [meiliga kaitstud] mirza23 534788
Aornob Hasan [meiliga kaitstud] arnob45 778473
Nuhas Ahsan [meiliga kaitstud] nuhas34 563452
Näide 1: printige sakkidega eraldatud faili teine veerg, kasutades suvandit -F
Järgmine käsk 'sed' prindib tabulaatoriga eraldatud tekstifaili teise veeru. Siin, "-F" Valikut kasutatakse faili väljaeraldaja määramiseks.
$ kassi kasutajad.txt$ awk -F '\ t' 'print $ 2' kasutajad.txt
Pärast käskude käivitamist ilmub järgmine väljund. Faili teine veerg sisaldab kasutaja e-posti aadresse, mis kuvatakse väljundina.
Näide 2: printige tabulaatoriga eraldatud faili esimene veerg muutuja FS abil
Järgmine käsk 'sed' prindib tabulaatoriga eraldatud tekstifaili esimese veeru. Siin, FS Muutujat (Field Separator) kasutatakse faili väljaeraldaja määramiseks.
$ kassi kasutajad.txt$ awk 'print $ 1' FS = '\ t' kasutajad.txt
Pärast käskude käivitamist ilmub järgmine väljund. Faili esimene veerg sisaldab kasutaja nimesid, mis kuvatakse väljundina.
Näide 3: printige vahelehega piiritletud faili kolmas veerg koos vormindusega
Järgmine käsk 'sed' printib tabeldatud tekstifaili kolmanda veeru vormindusega, kasutades FS muutuja ja printf. Siin, FS muutujat kasutatakse faili väljaeraldaja määramiseks.
$ kassi kasutajad.txt$ awk 'BEGIN FS = "\ t" printf "% 10s \ n", $ 3 kasutajat.txt
Pärast käskude käivitamist ilmub järgmine väljund. Faili kolmas veerg sisaldab siin trükitud kasutajanime.
Näide 4: printige vahelehtedega eraldatud faili kolmas ja neljas veerg OFS-i abil
OFS (Output Field Separator) kasutatakse väljundisse välja eraldaja lisamiseks. Järgmine käsk awk jagab faili sisu vahekaardi (\ t) eraldaja põhjal ja printib 3. ja 4. veeru, kasutades eraldajana vahekaarti (\ t).
$ kassi kasutajad.txt$ awk -F "\ t" 'OFS = "\ t" print $ 3, $ 4> ("väljund.txt ") 'kasutajad.txt
$ kassi väljund.txt
Pärast ülaltoodud käskude käivitamist ilmub järgmine väljund. 3. ja 4. veerg sisaldavad siin trükitud kasutajanime ja parooli.
Näide 5: asendage tabulaatoriga eraldatud faili konkreetne sisu
sub () funktsiooni kasutatakse asenduses käskimiseks 'awk. Järgmine käsk awk otsib numbrit 45 ja asendab numbriga 90, kui failis on otsingu number. Pärast asendamist salvestatakse faili sisu väljundisse.txt-fail.
$ kassi kasutajad.txt$ awk -F "\ t" 'sub (/ 45 /, 90); print' kasutajad.txt> väljund.txt
$ kassi väljund.txt
Pärast ülaltoodud käskude käivitamist ilmub järgmine väljund. Väljund.txt-fail näitab muudetud sisu pärast asenduse rakendamist. Siin on 5. rea sisu muudetud ja 'arnob45' muudetakse väärtuseks 'arnob90'.
Näide 6: lisage string tabulaatoriga eraldatud faili iga rea algusesse
Järgnevalt kasutatakse käsku 'awk', valikut '-F', et jagada faili sisu vahelehe põhjal (\ t). OFS on lisanud väljundisse välja eraldajana koma (,). funktsiooni sub () kasutatakse stringi '- →' lisamiseks väljundi iga rea algusesse.
$ kassi kasutajad.txt$ awk -F "\ t" 'OFS = ","; sub (/ ^ /, "---->"); print $ 1, $ 2, $ 3' kasutajad.txt
Pärast ülaltoodud käskude käivitamist ilmub järgmine väljund. Iga välja väärtus on eraldatud komaga (,) ja iga rea algusesse lisatakse string.
Näide 7: asendage tabulaatoriga eraldatud faili väärtus funktsiooni gsub () abil
Funktsiooni gsub () kasutatakse globaalse asendamise käsus 'awk'. Kõik faili stringiväärtused asendavad koha, kus otsingu muster sobib. Peamine erinevus funktsioonide sub () ja gsub () vahel seisneb selles, et sub () funktsioon peatab asendusülesande pärast esimese vaste leidmist ja funktsioon gsub () otsib faili lõpus olevat mustrit asendamiseks. Järgmine käsk awk otsib failis sõna „nila” ja „Mira” ning asendab kõik esinemised tekstiga „Vale nimi”, kus otsitav sõna sobib.
$ kassi kasutajad.txt$ awk -F '\ t' 'gsub (/ nila | Mira /, "Vale nimi"); print 'kasutajad.txt
Pärast ülaltoodud käskude käivitamist ilmub järgmine väljund. Sõna 'nila' eksisteerib faili 3. real kaks korda, mis on väljundis asendatud sõnaga 'Invalid Name'.
8. näide: vormindatud sisu printimine sakkidega eraldatud failist
Järgmine käsk 'awk' printib faili esimese ja teise veeru koos vormindusega printf abil. Väljund näitab kasutaja nime, lisades sulgudesse e-posti aadressi.
$ kassi kasutajad.txt$ awk -F '\ t' 'printf "% s (% s) \ n", $ 1, $ 2' kasutajat.txt
Pärast ülaltoodud käskude käivitamist ilmub järgmine väljund.
Järeldus
Kõiki sakkidega eraldatud faile saab käsu 'awk' abil hõlpsasti sõeluda ja printida teise eraldajaga. Vahekaartidega eraldatud failide sõelumise ja erinevas vormingus printimise viisid on selles õpetuses näidatud mitme näite abil. Funktsioonide sub () ja gsub () kasutamist käskudes 'awk' vahekaardiga eraldatud faili sisu asendamiseks selgitatakse ka selles õpetuses. Loodan, et see õpetus aitab lugejatel pärast selle õpetuse näidete nõuetekohast harjutamist tabeldatud failidega hõlpsalt sõeluda.