Linuxi käsk awk on võimas utiliit tekstifailide erinevate toimingute jaoks, näiteks otsimiseks, asendamiseks ja printimiseks. Tabeliandmetega on seda lihtne kasutada, sest see jagab iga rea automaatselt väljade eraldaja põhjal väljadeks või veergudeks. Kui töötate tabeliandmeid sisaldava tekstifailiga ja soovite printida konkreetse veeru andmed, on parim variant käsk 'awk'. Selles õpetuses näitame teile, kuidas printida rea või tekstifaili esimene veerg ja / või viimane veerg.
Trükkige käsu väljundi esimene ja / või viimane veerg
Paljud Linuxi käsud, näiteks käsk 'ls, genereerivad tabeliväljundeid. Siin näitame teile, kuidas printida esimene veerg ja / või viimane veerg käsu 'ls -l' väljundist.
Näide 1: printige käsu väljundi esimene veerg
Järgmine käsk 'awk' prindib esimese veeru käsu 'ls -l' väljundist.
$ ls -l$ ls -l | awk 'print $ 1'
Pärast ülaltoodud käskude käivitamist luuakse järgmine väljund.
Näide 2: printige käsu väljundi viimane veerg
Järgmine käsk 'awk' prindib käsu 'ls -l' väljundist viimase veeru.
$ ls -l$ ls -l | awk 'print $ NF'
Pärast ülaltoodud käskude käivitamist luuakse järgmine väljund.
Näide 3: printige käsu väljundi esimene ja viimane veerg
Järgmine käsk 'awk' printib käsu 'ls -l' väljundist esimese ja viimase veeru.
$ ls -l$ ls -l | awk 'print $ 1, $ NF'
Pärast ülaltoodud käskude käivitamist luuakse järgmine väljund.
Trükkige tekstifaili esimene ja / või viimane veerg
Siin näitame teile, kuidas kasutada käsku 'awk' tekstifaili esimese ja / või viimase veeru printimiseks.
Looge tekstifail
Selle õpetuse järgimiseks looge nimega tekstifail klientidele.txt järgmise sisuga. Fail sisaldab kolme tüüpi kliendiandmeid: nimi koos ID-ga, e-posti aadress ja telefoninumber. Nende väärtuste eraldamiseks kasutatakse vahelehemärki (\ t).
Nimi E-posti telefonJonathon Bing - 1001 [meiliga kaitstud] 01967456323
Micheal Jackson - 2006 [meiliga kaitstud] 01756235643
Janifer Lopez - 3029 [meiliga kaitstud] 01822347865
John Abraham - 4235 j [meiliga kaitstud] 01590078452
Mir Sabbir - 2756 [meiliga kaitstud] 01189523978
Näide 4: printige faili esimene veerg ilma eraldajat kasutamata
Kui käsus 'awk' ei kasutata ühtegi välja eraldajat, kasutatakse vaikevälja eraldajana tühikut. Järgmine käsk 'awk' printib esimese veeru vaikeraldaja abil.
$ kassi kliendid.txt$ awk 'print $ 1' kliendid.txt
Pärast ülaltoodud käskude käivitamist luuakse järgmine väljund. Pange tähele, et väljundis kuvatakse ainult kliendi eesnimi, kuna väli eraldajana kasutatakse tühikut. Selle probleemi lahendus on toodud järgmises näites.
Näide 5: printige eraldaja abil faili esimene veerg
Siin kasutatakse \ t välja eraldajana faili esimese veeru printimiseks. Välja eraldaja määramiseks kasutatakse valikut '-F'.
$ kassi kliendid.txt$ awk -F '\ t' 'print $ 1' kliente.txt
Pärast ülaltoodud käskude käivitamist luuakse järgmine väljund. Faili sisu on jaotatud \ t põhjal kolme veergu. Seetõttu trükitakse esimese veeruna kliendi nimi ja ID. Kui soovite printida kliendi nime ilma ID-ta, jätkake järgmise näite juurde.
Kui soovite printida kliendi nime ilma id-ta, peate välja eraldajana kasutama tähte "-". Järgmine käsk 'awk' prindib kliendi nime ainult esimese veeruna.
$ awk -F '-' 'print $ 1' kliendid.txt
Pärast ülaltoodud käskude käivitamist luuakse järgmine väljund. Väljund sisaldab klientide täisnimesid ilma nende ID-deta.
Näide 6: printige faili viimane veerg
Järgmine käsk awk prindib klientide viimase veeru.txt. Kuna käsus ei kasutata ühtegi välja eraldajat, kasutatakse ruumi eraldajana tühikut.
$ kassi kliendid.txt$ awk 'print $ NF' kliendid.txt
Pärast ülaltoodud käskude käivitamist luuakse järgmine väljund. Viimane veerg sisaldab telefoninumbreid, nagu on näidatud väljundis.
Näide 7: printige faili esimene ja viimane veerg
Järgmine käsk 'awk' printib klientide esimese ja viimase veeru.txt. Siin kasutatakse vahekaarti (\ t) välja eraldajana sisu veergudeks jagamiseks. Siin kasutatakse väljundi eraldajana vahelehte (\ t).
$ kassi kliendid.txt$ awk -F "\ t" 'print $ 1 "\ t" $ NF' kliente.txt
Pärast ülaltoodud käskude käivitamist ilmub järgmine väljund. Sisu on jaotatud kolme veergu \ t; esimeses veerus on kliendi nimi ja ID ning teises veerus telefoninumber. Esimene ja viimane veerg prinditakse, kasutades eraldajana \ t.
Järeldus
Esimese veeru ja / või viimase veeru saamiseks mis tahes käsu väljundist või tabeliandmetest saab käsku 'awk' rakendada mitmel viisil. Oluline on märkida, et käsus on nõutav välja eraldaja ja kui seda pole, kasutatakse ruumi.