Ärme

Veerude vahemiku printimine käsu 'awk' abil

Veerude vahemiku printimine käsu 'awk' abil
Käsk awk on üks paljudest käskudest, mida saab kasutada veergude vahemiku printimiseks Linuxi tabeliandmetest. Käsku 'awk' saab kasutada otse terminalist, käivitades skriptifaili 'awk'. Selles õpetuses näitame teile, kuidas tabeliandmetest veergude vahemikku printida.

Näide 1: veergude vahemiku printimine käsuväljundist

Järgmine käsk prindib käsu väljundist teise, kolmanda ja neljanda veeru, 'ls -l". Siin on veergude numbrid selgesõnaliselt välja toodud, kuid järgmises näites on näidatud sama veergude vahemiku printimiseks tõhusam käsk.

$ ls -l | awk 'print $ 2, $ 3, $ 4'

Järgmine väljund on loodud ülaltoodud käsuga.

Näide 2: printige failist veergude vahemik, kasutades a eest silmus

Selle ja selle õpetuse teiste näidete järgimiseks looge tekstifail nimega märgid.txt järgmise sisuga:

ID CSE203 CSE102 CSE202
1109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58

Järgmine käsk 'awk' printib kolm esimest veergu märkidest.txt. The eest loopi kasutatakse veeruväärtuste printimiseks ja silmus sisaldab kolme sammu. The NF muutuja näitab faili väljade või veergude koguarvu.

$ kassi märgid.txt
$ awk 'for (i = 1; i<=NF-1;i++) printf $i" "; print ""' marks.txt

Järgmine väljund saadakse käsu käivitamisel. Väljund näitab õpilast ID-d ja märgid CSE203 ja CSE102.

Näide 3: veergude vahemiku printimine, määratledes algus- ja lõppmuutujad

Järgmine käsk 'awk' prindib käsu väljundist 'ls -l' kolm esimest veergu, initsialiseerides alustades ja lõpp muutujad. Siin väärtus alustades muutuja on 1 ja väärtuse lõpp muutuja on 3. Need muutujad itereeritakse for for loop veeruväärtuste printimiseks.

$ ls -l | awk 'BEGIN esimene = 1; viimane = 3
for (i = esimene; i < last; i++) printf("%s ", $i) print $last '

Pärast käsu käivitamist ilmub järgmine väljund. Väljund näitab väljundi kolme esimest veeru väärtust 'ls -l'.

Näide 4: veergude vahemiku printimine failist koos vormindusega

Järgmine käsk 'awk' prindib saidi kolm esimest veergu märgid.txt kasutades printf ja väljundvälja eraldaja (OFS). Siin sisaldab for loop tsüklit kolm sammu ja failist trükitakse järjest kolm veergu. OFS kasutatakse siin veergude vahele tühiku lisamiseks. Kui silmuse (i) loenduri väärtus on võrdne väärtusega lõpp muutuja, siis luuakse uus rida (\ n).

$ kassi märgid.txt
$ awk -v algus = 1 -v lõpp = 3 'jaoks (i = algus; i<=end;i++) printf("%s%s",
$ i, (i == lõpp) ? "\ n": OFS) 'märgid.txt

Pärast ülaltoodud käskude käivitamist genereeritakse järgmine väljund.

Näide 5: veerude vahemiku printimine failist tingimuslausega

Järgmine käsk 'awk' prindib faili esimese ja viimase veeru, kasutades lauset for loop ja if. Siin sisaldab for loop nelja sammu. The alustades ja lõpp muutujaid kasutatakse skriptis teise ja kolmanda veeru failist välja jätmiseks tingimuse if abil. Muutujat OFS kasutatakse veergude vahele ruumi lisamiseks ja muutuja ORS abil uue rea lisamiseks (\ n) pärast viimase veeru printimist.

$ kassi märgid.txt
$ awk -v algus = 2 -v lõpp = 3 'jaoks (i = 1; i<=NF;i++)
kui (i> = algus && i<=end) continue;
else printf ("% s% s", $ i, (i!= NF) ? OFS: ORS) 'märgid.txt

Pärast ülaltoodud käskude käivitamist ilmub järgmine väljund. Väljundil kuvatakse märkide esimene ja viimane veerg.txt.

Näide 6: veerude vahemiku printimine failist muutuja NF abil

Järgmine käsk 'awk' prindib faili esimese ja viimase veeru NF-muutuja abil. Veeru väärtuste printimiseks ei kasutata tsükleid ega tingimuslauseid. NF tähistab väljade arvu. Markides on neli veergu.txt. $ (NF-3) määratleb esimese veeru ja $ NF tähistab viimast veergu.

$ kassi märgid.txt
$ awk 'print $ (NF-3) "" $ NF' märgid.txt

Järgmine väljund saadakse ülaltoodud käskude käivitamisel. Väljundis kuvatakse märkide esimene ja viimane veerg.txt.

Näide 7: veerude vahemiku printimine failist, kasutades substr () ja index ()

Funktsioon index () tagastab positsiooni, kui esimese argumendi väärtuses on teine ​​argumendi väärtus. Funktsioonil substr () võib olla kolm argumenti. Esimene argument on stringi väärtus, teine ​​argument on lähtepositsioon ja kolmas argument on pikkus. Substrakti () kolmas argument jäetakse järgmises käsus välja. Kuna veeru algus on käsus 'awk' $ 1, tagastab funktsioon index () $ 3 ja käsk prindib vahemikus $ 3 kuni $ 4.

$ kassi märgid.txt
$ awk 'print substr ($ 0, index ($ 0, $ 3))' märgid.txt

Järgmine väljund saadakse ülaltoodud käskude käivitamisel.

Näide 8: printige järjest faili veergude vahemik printf abil

Järgmine käsk 'awk' printib märkide esimese, teise ja kolmanda veeru.txt, määrates piisavalt ruumi 10 tähemärgi jaoks.

$ kassi märgid.txt
$ awk '// printf "% 10s% 10s% 10s \ n", $ 1, $ 3, $ 2' märki.txt

Järgmine väljund saadakse ülaltoodud käskude käivitamisel.

Järeldus

Veergude vahemiku printimiseks käsu väljundist või failist on erinevaid viise. See õpetus näitab, kuidas käsk awk võib aidata Linuxi kasutajatel sisu tabelandmetest printida.

Juhtige ja hallake hiire liikumist mitme kuvari vahel Windows 10-s
Dual Display Mouse Manager võimaldab teil kontrollida ja konfigureerida hiire liikumist mitme monitori vahel, aeglustades selle liikumist piiri läheda...
WinMouse võimaldab teil kohandada ja parandada hiirekursori liikumist Windowsi arvutis
Kui soovite oma hiirekursori vaikefunktsioone paremaks muuta, kasutage vabavara WinMouse. See lisab rohkem funktsioone, mis aitavad teil alandlikust h...
Hiire vasakklõps nupp ei tööta Windows 10-s
Kui kasutate oma sülearvuti või lauaarvutiga spetsiaalset hiirt, kuid hiire vasakklõps nupp ei tööta mingil põhjusel operatsioonisüsteemis Windows 10/...