Kā drukāt kolonnu diapazonu, izmantojot komandu 'awk'

How Print Range Columns Using Awk Command



Komanda 'awk' ir viena no daudzajām komandām, ko var izmantot, lai izdrukātu kolonnu diapazonu no tabulas datiem Linux. Komandu 'awk' var izmantot tieši no termināļa, izpildot 'awk' skripta failu. Šajā apmācībā mēs parādīsim, kā drukāt kolonnu diapazonu no tabulas datiem.

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.