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 CSE2021109 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 = 3for (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.