Awk

Kako ispisati niz stupaca pomoću naredbe 'awk'

Kako ispisati niz stupaca pomoću naredbe 'awk'
Naredba 'awk' jedna je od mnogih naredbi koja se može koristiti za ispis niza stupaca iz tabličnih podataka u Linuxu. Naredba 'awk' može se koristiti izravno s terminala izvršavanjem datoteke skripte 'awk'. U ovom uputstvu pokazat ćemo vam kako ispisati niz stupaca iz tabličnih podataka.

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 CSE202
1109 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 = 3
for (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.txt
oznake $ 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.txt
oznake $ 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.

Vulkan za korisnike Linuxa
Sa svakom novom generacijom grafičkih kartica vidimo da programeri igara pomiču granice grafičke vjernosti i dolaze na korak od fotorealizma. No, bez ...
OpenTTD vs Simutrans
Stvaranje vlastite simulacije prijevoza može biti zabavno, opuštajuće i izuzetno primamljivo. Zbog toga morate isprobati što više igara kako biste pro...
Vodič za OpenTTD
OpenTTD je jedna od najpopularnijih igara za poslovnu simulaciju. U ovoj igri morate stvoriti prekrasan prijevoznički posao. Međutim, počet ćete u poč...