Kako ispisati niz stupaca pomoću naredbe `awk`

How Print Range Columns Using Awk Command

Naredba `awk` jedna je od mnogih naredbi koje se mogu 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 vodiču pokazat ćemo vam kako ispisati niz stupaca iz tabličnih podataka.

Primjer 1: Ispišite raspon stupaca s izlaza naredbe

Sljedeća naredba ispisat će drugi, treći i četvrti stupac iz izlaza naredbe, ‘Ls -l ‘. Ovdje su brojevi stupaca izričito navedeni, ali učinkovitija naredba za ispis istog raspona stupaca prikazana je u sljedećem primjeru.



$ls - | awk '{ispišite 2 USD, 3 USD, 4 USD $'

Sljedeći izlaz proizvodi gornja naredba.





Primjer 2: Ispišite raspon stupaca iz datoteke pomoću a za petlja

Da biste slijedili ovaj i ostale primjere u ovom vodiču, stvorite tekstualnu datoteku pod nazivom marks.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 marks.txt. The za loop koristi se za ispis vrijednosti stupca, a petlja uključuje tri koraka. The NF varijabla označava ukupni broj polja ili stupaca datoteke.

$mačkamarks.txt
$awk '{for (i = 1; i<=NF-1;i++) printf $i' '; print ''}'marks.txt

Sljedeći izlaz bit će proizveden pokretanjem naredbe. Ispis 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 naredbe izlaz 'ls -l' inicijalizacijom s početkom i završetak varijable. Ovdje je vrijednost s početkom varijabla je 1, a vrijednost završetak varijabla je 3. Ove se varijable ponavljaju u for petlji za ispis vrijednosti stupca.

$ls - | awk 'BEGIN {first = 1; posljednji = 3}
{for (i = prvo; i

Nakon izvođenja naredbe pojavit će se sljedeći izlaz. Izlaz prikazuje prve tri vrijednosti stupca izlaza, 'ls -l'.

Primjer 4: Ispišite niz stupaca iz datoteke s oblikovanjem

Sljedeća naredba `awk` ispisat će prve tri kolone datoteke marks.txt koristeći printf i separator izlaznog polja ( OFS ). Ovdje petlja for uključuje tri koraka, a tri će se stupca ispisivati ​​u nizu iz datoteke. OFS ovdje se koristi za dodavanje razmaka između stupaca. Kad je vrijednost brojača petlje (i) jednaka završetak varijabla, tada se generira novi redak ( n).

$mačkamarks.txt
$awk -v početak=1 -v kraj=3 '{for (i = početak; i<=end;i++) printf('%s%s',
$ i, (i == kraj)? ' n': OFS)} '
marks.txt

Sljedeći izlaz bit će generiran nakon pokretanja gornjih naredbi.

Primjer 5: Ispišite raspon stupaca iz datoteke pomoću uvjetne naredbe

Sljedeća naredba `awk` ispisat će prvi i zadnji stupac iz datoteke pomoću for petlje i if naredbe. Ovdje petlja for uključuje četiri koraka. The s početkom i završetak 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 se koristi za dodavanje novog retka ( n) nakon ispisa zadnjeg stupca.

$mačkamarks.txt
$awk -v početak=2 -v kraj=3 '{for (i = 1; i<=NF;i++)
ako je (i> = početak && i<=end) continue;
else printf ('%s%s', $ i, (i! = NF)? OFS: ORS)} '
marks.txt

Sljedeći izlaz pojavit će se nakon pokretanja gornjih naredbi. Ispis prikazuje prvi i posljednji stupac marks.txt.

Primjer 6: Ispišite raspon stupaca iz datoteke pomoću varijable NF

Sljedeća naredba `awk` ispisat će prvi i posljednji stupac iz datoteke pomoću NF varijable. Za ispis vrijednosti stupaca ne koriste se petlje ili uvjetni izrazi. NF označava broj polja. U marks.txt postoje četiri stupca. $ (NF-3) definira prvi stupac, a $ NF označava zadnji stupac.

$mačkamarks.txt
$awk '{print $ (NF-3)' '$ NF}'marks.txt

Sljedeći izlaz proizvodi se pokretanjem gore navedenih naredbi. Ispis prikazuje prvi i posljednji stupac marks.txt.

Primjer 7: Ispišite raspon stupaca iz datoteke pomoću substr () i index ()

Funkcija index () vraća poziciju ako vrijednost drugog argumenta postoji u vrijednosti prvog argumenta. Funkcija substr () može uzeti tri argumenta. Prvi argument je vrijednost niza, drugi argument je početna pozicija, a treći argument je duljina. Treći argument substr () izostavljen je u sljedećoj naredbi. Budući da stupac počinje s $ 1 u naredbi `awk`, funkcija index () vratit će $ 3, a naredba će ispisati od $ 3 do $ 4.

$mačkamarks.txt
$awk '{print substr ($ 0, indeks ($ 0, $ 3))}'marks.txt

Sljedeći izlaz bit će proizveden pokretanjem gore navedenih naredbi.

Primjer 8: Uzastopno ispišite raspon stupaca iz datoteke pomoću printf

Sljedeća naredba `awk` ispisat će prvi, drugi i treći stupac marks.txt postavljanjem dovoljno prostora za 10 znakova.

$mačkamarks.txt
$awk '// {printf' %10s %10s %10s n ', $ 1, $ 3, $ 2}'marks.txt

Sljedeći izlaz bit će proizveden pokretanjem gore navedenih naredbi.

Zaključak

Postoje različiti načini ispisa raspona stupaca iz naredbenog izlaza ili datoteke. Ovaj vodič prikazuje kako naredba `awk` može pomoći korisnicima Linuxa u ispisivanju sadržaja iz tabličnih podataka.