Primjer 1: Ispišite raspon stupaca iz izlaza naredbe
Sljedeća će naredba ispisati drugi, treći i četvrti stupac iz izlaza naredbe, 'je -l'. Ovdje su brojevi stupaca izričito navedeni, ali učinkovitija naredba za ispis istog raspona stupaca prikazana je u sljedećem primjeru.
$ ls -l | awk 'ispis $ 2, $ 3, $ 4'Sljedeći izlaz proizvodi gornja naredba.
Primjer 2: Ispišite raspon stupaca iz datoteke pomoću a za petlja
Da biste slijedili ovaj primjer i ostale primjere u ovom vodiču, stvorite tekstualnu datoteku s imenom oznake.txt sa sljedećim sadržajem:
ID CSE203 CSE102 CSE2021109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58
Sljedeća naredba 'awk' ispisat će prva tri stupca oznaka.txt. The za petlja koristi se za ispis vrijednosti stupaca, a petlja uključuje tri koraka. The NF varijabla označava ukupan broj polja ili stupaca datoteke.
$ mačjih maraka.txt$ awk 'za (i = 1; i<=NF-1;i++) printf $i" "; print ""' marks.txt
Izvođenjem naredbe proizvest će se sljedeći izlaz. Rezultat prikazuje učenika Osobne iskaznice i oznake za CSE203 i CSE102.
Primjer 3: Ispišite raspon stupaca definiranjem početne i završne varijable
Sljedeća naredba 'awk' ispisat će prva tri stupca iz izlaza naredbe 'ls -l' inicijalizacijom datoteke polazeći i završavajući varijable. Ovdje je vrijednost polazeći varijabla je 1, a vrijednost završavajući varijabla je 3. Te se varijable ponavljaju u petlji for za ispis vrijednosti stupaca.
$ ls -l | awk 'POČINI prvi = 1; zadnji = 3for (i = prvo; i < last; i++) printf("%s ", $i) print $last '
Sljedeći će se izlaz pojaviti nakon pokretanja naredbe. Izlaz prikazuje prve tri vrijednosti stupca izlaza, 'ls -l'.
Primjer 4: Ispišite niz stupaca iz datoteke oblikovanjem
Sljedeća naredba "awk" ispisat će prva tri stupca oznake.txt koristeći printf i izlazni separator polja (OFS). Ovdje petlja for uključuje tri koraka, a tri će se stupca ispisati u slijedu iz datoteke. OFS ovdje se koristi za dodavanje razmaka između stupaca. Kada je brojač petlje (i) jednak završavajući varijabla, tada se generira nova linija (\ n).
$ mačjih maraka.txt$ awk -v početak = 1 -v kraj = 3 'za (i = početak; i<=end;i++) printf("%s%s",
$ i, (i == kraj) ? "\ n": OFS) 'oznake.txt
Sljedeći će se izlaz generirati nakon pokretanja gornjih naredbi.
Primjer 5: Ispišite raspon stupaca iz datoteke pomoću uvjetnog izraza
Sljedeća naredba 'awk' ispisat će prvi i zadnji stupac iz datoteke pomoću petlje for i naredbe if. Ovdje petlja for uključuje četiri koraka. The polazeći i završavajući varijable se koriste u skripti za izostavljanje drugog i trećeg stupca iz datoteke pomoću uvjeta if. Varijabla OFS koristi se za dodavanje razmaka između stupaca, a varijabla ORS dodaje se novi redak (\ n) nakon ispisa zadnjeg stupca.
$ mačjih maraka.txt$ awk -v početak = 2 -v kraj = 3 'za (i = 1; i<=NF;i++)
if (i> = start && i<=end) continue;
else printf ("% s% s", $ i, (i!= NF) ? OFS: ORS) 'oznake.txt
Sljedeći će se izlaz pojaviti nakon pokretanja gornjih naredbi. Izlaz prikazuje prvi i zadnji stupac oznaka.txt.
Primjer 6: Ispišite raspon stupaca iz datoteke pomoću NF varijable
Sljedeća naredba 'awk' ispisat će prvi i zadnji stupac iz datoteke pomoću NF varijable. Za ispis vrijednosti stupaca ne koriste se petlje ili uvjetni izrazi. NF označava broj polja. U oznakama su četiri stupca.txt. $ (NF-3) definira prvi stupac, a $ NF označava zadnji stupac.
$ mačjih maraka.txtoznake $ awk 'print $ (NF-3) "" $ NF'.txt
Sljedeći izlaz dobiva se izvođenjem gornjih naredbi. Izlaz prikazuje prvi i zadnji stupac oznaka.txt.
Primjer 7: Ispis raspona stupaca iz datoteke pomoću substr () i index ()
Funkcija index () vraća položaj ako vrijednost drugog argumenta postoji u vrijednosti prvog argumenta. Funkcija substr () može imati tri argumenta. Prvi je argument vrijednost niza, drugi je polazni položaj, a treći je duljina. Treći argument substr () izostavljen je u sljedećoj naredbi. Budući da stupac započinje s $ 1 u naredbi 'awk', funkcija index () vratit će $ 3, a naredba će ispisati s $ 3 na $ 4.
$ mačjih maraka.txtoznake $ awk 'print substr ($ 0, indeks ($ 0, $ 3)).txt
Izvođenjem gornjih naredbi proizvest će se sljedeći izlaz.
Primjer 8: Sekvencijalno ispisujte niz stupaca iz datoteke pomoću printf
Sljedeća naredba 'awk' ispisat će prvi, drugi i treći stupac oznaka.txt postavljanjem dovoljno prostora za 10 znakova.
$ mačjih maraka.txt$ awk '// printf "% 10s% 10s% 10s \ n", $ 1, $ 3, $ 2' oznake.txt
Sljedeći će se izlaz proizvesti izvođenjem gornjih naredbi.
Zaključak
Postoje različiti načini ispisa raspona stupaca iz izlaza naredbe ili datoteke. Ovaj vodič pokazuje kako naredba "awk" može pomoći Linux korisnicima da ispisuju sadržaj iz tabličnih podataka.