Linuxis saab käsku 'awk' kasutada mitmel viisil. Näiteks saab seda kasutada tekstifaili sisu printimiseks. Paljude tekstifailide esimene rida sisaldab faili pealkirja ja mõnikord tuleb faili sisu printimisel esimene rida vahele jätta. Selles õpetuses näitame teile, kuidas seda ülesannet käsu 'awk' abil täita.
Looge tekstifail
Selle õpetuse järgimiseks looge tabulaatoriga eraldatud tekstifail nimega raamatute loend.txt järgmise sisuga. See fail sisaldab loetelu raamatutest ja nende vastavatest autoritest. Selles õpetuses näitame teile, kuidas printida selle faili erinevaid osi pärast esimese rea vahele jätmist.
Küberturvalisus koos Paul Troncone'i, Carl AlbingigaKäsuliin Kung Fu Jason Cannon
Linuxi käsurida Travis Booth
Bash lihtsate sammudega Mike McGrath
Unix lihtsate sammudega Mike McGrath
Näide 1: jätke faili esimene rida vahele, kasutades NR-i ja operaatorit '>'
Muutuja NR näitab faili kirjete arvu. Järgmine käsk 'awk' kasutab muutuja NR abil faili esimese rea vahele jätmiseks. NR väärtus on 1 esimesel real. Järgmine käsk prindib ridu, mille NR väärtus on suurem kui 1.
$ kassiraamat.txt$ awk '(NR> 1)' raamatute loend.txt
Pärast ülaltoodud käskude käivitamist luuakse järgmine väljund. Väljund sisaldab kõiki ridu peale faili esimese rea.
Näide 2: Jätke esimene rida vahele, kasutades NR ja '!= 'operaator
Järgmine käsk 'awk' sarnaneb eelmises näites kirjeldatuga. Kuid!= siin kasutatakse '>' asemel võrdlusoperaatorit.
$ kassiraamat.txt$ awk 'NR!= 1 'raamatute loend.txt
Pärast ülaltoodud käskude käivitamist luuakse järgmine väljund. Väljund näitab kõiki ridu peale faili esimese rea.
Näide 3: Tingimuslauset kasutades jätke faili esimene rida vahele
Järgmine käsk 'awk' prindib faili read, kui lause if on tõene. Siin on if-lause tõene ainult siis, kui NR väärtus ei võrdu 1-ga.
$ kassiraamat.txt$ awk 'if (NR!= 1) print 'raamatute loend.txt
Pärast ülaltoodud käskude käivitamist luuakse järgmine väljund. Väljund sisaldab kõiki ridu, välja arvatud faili esimene rida.
Näide 4: printige raamatust nimed failist, kuid jätke esimene rida vahele
Kõigi raamatunimede, välja arvatud esimese printimiseks, kasutatakse selles näites kahte käsku 'awk'. Käsk awk loeb faili esimese veeru väljaeraldaja (\ t) põhjal ja saadab väljundi teisele käsule awk. Teine käsk 'awk' prindib soovitud väljundi.
$ kassiraamat.txt$ awk -F "\ t" 'print $ 1' raamatute loend.txt | awk 'NR!= 1 print '
Pärast ülaltoodud käskude käivitamist luuakse järgmine väljund. Väljund näitab kõiki raamatunimesid, välja arvatud esimese raamatu nimed.
Näide 5: vormindage faili sisu pärast esimese rea vahele jätmist
Valikut '-F', muutujat NR ja printf kasutatakse järgmises 'awk' käsus vormindatud väljundi loomiseks pärast esimese rea vahelejätmist. Käsk jagab faili sisu veergudeks \ t alusel ja printf prindib esimese ja teise veeru, kui NR väärtus on vähemalt 2.
$ kassiraamat.txt$ awk -F '\ t' 'NR> = 2 printf "% 30s% 20s \ n", $ 1, $ 2' raamatute loend.txt
Pärast ülaltoodud käskude käivitamist luuakse järgmine väljund. Väljund näitab faili vormindatud sisu, välja arvatud faili esimene rida.
Näide 6: printige raamatunimed pärast esimese rea vahele jätmist, kasutades NR ja NF
Järgmine käsk awk kasutab pärast esimese raamatu vahelejätmist raamatute nimede printimiseks valikut -F ning NR ja NF. Valikut '-F' kasutatakse failibaasi sisu eraldamiseks \ t. NR-d kasutatakse esimese rea vahele jätmiseks ja NF-i kasutatakse ainult esimese veeru printimiseks.
$ kassiraamat.txt$ awk -F '\ t' 'NR> 1 && NF = 1' raamatute loend.txt
Pärast ülaltoodud käskude käivitamist luuakse järgmine väljund. Väljund sisaldab kõiki failis olevaid raamatunimesid, välja arvatud esimese raamatu nimed.
Näide 7: Pärast esimese rea vahele jätmist printige vormindatud autorinimed
Järgmine käsk awk kasutab autori nimede printimiseks pärast esimese rea vahelejätmist valikut '-F' ja tingimuslauset. Siin kasutatakse NR-väärtust tingimustes if. Siit trükitakse esimese rea sisu asemel esimese reana “Autori nimi: \ n \ n”. NR-i muude väärtuste jaoks prinditakse failist autori nimed.
$ kassiraamat.txt$ awk -F '\ t' 'if (NR == 1) printf "\ nAutori nimi: \ n \ n"; else printf "% s \ n", $ 2 'raamatute loend.txt
Pärast ülaltoodud käskude käivitamist luuakse järgmine väljund. Väljundil kuvatakse tekst "Autori nimi:" uue reaga ja kõik autorinimed on välja trükitud, välja arvatud esimene.
Järeldus
Faili esimese rea saab vahele jätta, kasutades erinevaid Linuxi käske. Nagu selles õpetuses näidatud, on faili esimese rea vahele jätmiseks käsuga 'awk' erinevad viisid. Märkimisväärselt saab käsu 'awk' muutujat NR kasutada mis tahes faili esimese rea vahele jätmiseks.