U ovom našem dijelu Serija naredbi Linux Awk, pogledat ćemo jednu od najvažnijih značajki Awk, što je uređivanje polja.
Dobro je to znati Awk automatski dijeli ulazne retke koji su mu dati u polja, a polje se može definirati kao skup znakova koji su odvojeni od drugih polja unutarnjim separatorom polja.
Ako ste upoznati s Unixom/Linuxom ili ga poznajete programiranje bash ljuske, tada biste trebali znati koji je unutarnji separator polja (IFS) varijabla je. Zadani IFS u Awku su kartica i razmak.
Ovako funkcionira ideja razdvajanja polja Awk: kada naiđe na ulazni redak, prema definiranom IFS -u, prvi skup znakova je prvo polje, kojem se pristupa pomoću $1, drugi skup znakova je polje dva, kojem se pristupa pomoću $2, treći skup znakova je polje tri, kojem se pristupa pomoću $3 i tako dalje do posljednjeg skupa znakova.
Da bismo bolje razumjeli ovo uređivanje polja Awk, pogledajmo primjere u nastavku:
Primjer 1: Napravio sam tekstualnu datoteku pod nazivom tecmintinfo.txt.
# vi tecmintinfo.txt. # mačka tecmintinfo.txt.
Zatim iz naredbenog retka pokušavam ispisati datoteku prvi, drugi i treći polja iz datoteke tecmintinfo.txt pomoću naredbe ispod:
$ awk '// {print $ 1 $ 2 $ 3}' tecmintinfo.txt TecMint.comist.
Iz gornjeg izlaza možete vidjeti da se znakovi iz prva tri polja ispisuju na temelju IFS definirano koji je to prostor:
$1
.$2
.$3
.Ako ste primijetili u ispisanom ispisu, vrijednosti polja nisu razdvojene, a ispis se tako ponaša prema zadanim postavkama.
Da biste jasno vidjeli izlaz s razmakom između vrijednosti polja, morate dodati (,)
operater na sljedeći način:
$ awk '// {ispišite $ 1, $ 2, $ 3; } 'tecmintinfo.txt TecMint.com je.
Jedna važna stvar koju valja napomenuti i uvijek je zapamtiti je da upotreba ($)
u Awk razlikuje se od njegove uporabe u skripti ljuske.
Pod skriptama ljuske ($)
koristi se za pristup vrijednosti varijabli dok je u Awk($)
koristi se samo pri pristupu sadržaju polja, ali ne i za pristup vrijednosti varijabli.
Primjer 2: Pogledajmo još jedan primjer pomoću datoteke koja sadrži više redaka tzv my_shoping.list.
Nema stavke_Naziv Jedinica_Cijena Količina Cijena. 1 miš #20.000 1 #20.000. 2 Monitor #500.000 1 #500.000. 3 RAM_Čipovi #150.000 2 #300.000. 4 Ethernet_kabela #30.000 4 #120.000
Recite da ste htjeli samo tiskati Jedinična cijena
svake stavke na popisu za kupnju morat ćete pokrenuti naredbu u nastavku:
$ awk '// {ispišite $ 2, $ 3}' my_shopping.txt Stavka_Naziv Jedinica_Cijena. Miš #20.000. Monitor #500.000. RAM_Čipovi #150.000. Ethernet_kablovi #30.000.
Awk također ima a printf
naredba koja vam pomaže oblikovati izlaz dobar je način jer vidite da gornji izlaz nije dovoljno jasan.
Korištenje printf
formatirati izlaz Ime proizvoda i Jedinična cijena:
$ awk '// {printf " %-10s %s \ n", $ 2, $ 3}' my_shopping.txt Stavka_Naziv Jedinica_Cijena. Miš #20.000. Monitor #500.000. RAM_Čipovi #150.000. Ethernet_kablovi #30.000.
Uređivanje polja vrlo je važno pri upotrebi Awk za filtriranje teksta ili nizova pomaže vam pri preuzimanju određenih podataka u stupce na popisu. I uvijek zapamtite da je upotreba ($)
operater u Awk razlikuje se od onog u skripti ljuske.
Nadam se da vam je članak bio od pomoći, a za sve dodatne informacije ili pitanja možete postaviti komentar u odjeljak komentara.