1. piemērs: drukājiet kolonnu diapazonu no komandu izvades
Šī komanda no komandas izvades izdrukās otro, trešo un ceturto kolonnu, ‘Ls -l ‘. Šeit kolonnu numuri ir skaidri norādīti, bet efektīvāka komanda tāda paša kolonnu diapazona drukāšanai ir parādīta nākamajā piemērā.
$ls -viņi | awk '{drukāt $ 2, $ 3, $ 4}'
Šādu izvadi rada iepriekš minētā komanda.
2. piemērs. Drukājiet kolonnu diapazonu no faila, izmantojot priekš cilpa
Lai sekotu šim un citiem šīs apmācības piemēriem, izveidojiet teksta failu ar nosaukumu marks.txt ar šādu saturu :
ID CSE203 CSE102 CSE202
1109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58
Šī komanda 'awk' izdrukās pirmās trīs atzīmju.txt kolonnas. The priekš cilpa tiek izmantota kolonnu vērtību drukāšanai, un cilpa ietver trīs darbības. The NF mainīgais norāda kopējo faila lauku vai kolonnu skaitu.
$kaķismarks.txt$awk '{par (i = 1; i<=NF-1;i++) printf $i' '; print ''}'marks.txt
Palaižot komandu, tiks iegūta šāda izvade. Rezultāts parāda studentu ID un atzīmes par CSE203 un CSE102 .
3. piemērs. Drukājiet kolonnu diapazonu, definējot sākuma un beigu mainīgos
Šī komanda 'awk' izdrukās pirmās trīs kolonnas no komandu izvades 'ls -l', inicializējot sākot un beigas mainīgie. Lūk, vērtība sākot mainīgais ir 1, un vērtība beigas mainīgais ir 3. Šie mainīgie tiek iterēti pa ciklu, lai drukātu kolonnu vērtības.
$ls -viņi | awk 'SĀKT {pirmais = 1; pēdējais = 3}{par (i = pirmais; i
Pēc komandas palaišanas parādīsies šāda izvade. Rezultātā tiek parādītas pirmās trīs kolonnas vērtības “ls -l”.
4. piemērs: drukājiet kolonnu diapazonu no faila ar formatējumu
Šī komanda 'awk' izdrukās pirmās trīs kolonnas marks.txt izmantojot printf un izvades lauku atdalītājs ( OFS ). Šeit cilpa for ietver trīs darbības, un no faila secīgi tiks drukātas trīs kolonnas. OFS šeit tiek izmantots, lai pievienotu atstarpi starp kolonnām. Kad cilpas (i) skaitītāja vērtība ir vienāda ar beigas mainīgais, tad tiek ģenerēta jauna rinda ( n).
$kaķismarks.txt$awk -v sākt=1 -v beigas=3 '{par (i = sākums; i<=end;i++) printf('%s%s',
$ i, (i == beigas)? ' n': OFS)} 'marks.txt
Pēc iepriekš minēto komandu izpildes tiks ģenerēta šāda izvade.
5. piemērs: drukājiet kolonnu diapazonu no faila, izmantojot nosacījumu paziņojumu
Šī komanda 'awk' izdrukās faila pirmo un pēdējo kolonnu, izmantojot for loop un if. Šeit for for ietver četras darbības. The sākot un beigas mainīgie tiek izmantoti skriptā, lai izlaistu no faila otro un trešo kolonnu, izmantojot nosacījumu if. Mainīgo OFS izmanto, lai pievienotu atstarpi starp kolonnām, un ORS mainīgo izmanto, lai pievienotu jaunu rindu ( n) pēc pēdējās kolonnas drukāšanas.
$kaķismarks.txt$awk -v sākt=2 -v beigas=3 '{par (i = 1; i<=NF;i++)
ja (i> = sākt && i<=end) continue;
else printf ('%s%s', $ i, (i! = NF)? OFS: ORS)} 'marks.txt
Pēc iepriekš minēto komandu palaišanas parādīsies šāda izvade. Rezultātā tiek parādīta atzīmju.txt pirmā un pēdējā kolonna.
6. piemērs: drukājiet kolonnu diapazonu no faila, izmantojot NF mainīgo
Šī komanda 'awk' izdrukās faila pirmo un pēdējo kolonnu, izmantojot NF mainīgo. Kolonnu vērtību drukāšanai netiek izmantotas cilpas vai nosacījumi. NF norāda lauku skaitu. Mark.txt ir četras kolonnas. $ (NF-3) definē pirmo kolonnu, un $ NF norāda pēdējo kolonnu.
$kaķismarks.txt$awk '{print $ (NF-3)' '$ NF}'marks.txt
Šādu izvadi iegūst, izpildot iepriekš minētās komandas. Rezultātā tiek parādīta atzīmju.txt pirmā un pēdējā kolonna.
7. piemērs. Drukājiet kolonnu diapazonu no faila, izmantojot apakšstruktūru () un indeksu ()
Funkcija indekss () atgriež pozīciju, ja pirmajā argumenta vērtībā pastāv otrā argumenta vērtība. Funkcijai substr () var būt trīs argumenti. Pirmais arguments ir virknes vērtība, otrais arguments ir sākuma pozīcija, bet trešais arguments ir garums. Substr () trešais arguments tiek izlaists šādā komandā. Tā kā kolonna sākas no $ 1 komandā 'awk', indeksa () funkcija atgriezīs $ 3, un komanda drukās no $ 3 līdz $ 4.
$kaķismarks.txt$awk '{drukas apakšstruktūra (0 ASV dolāri, indekss (0 ASV dolāri, 3 ASV dolāri))}'marks.txt
Palaižot iepriekš minētās komandas, tiks iegūta šāda izvade.
8. piemērs. Secīgi drukājiet kolonnu diapazonu no faila, izmantojot printf
Šī komanda 'awk' izdrukās atzīmju.txt pirmo, otro un trešo kolonnu, nosakot pietiekami daudz vietas 10 rakstzīmēm.
$kaķismarks.txt$awk '// {printf' %10s %10s %10s n ', $ 1, $ 3, $ 2}'marks.txt
Palaižot iepriekš minētās komandas, tiks iegūta šāda izvade.
Secinājums
Ir dažādi veidi, kā drukāt kolonnu diapazonu no komandu izvades vai faila. Šī apmācība parāda, kā komanda awk var palīdzēt Linux lietotājiem izdrukāt saturu no tabulas datiem.