V Linuxu se ukaz 'awk' uporablja na različne načine. Na primer, z njo lahko natisnete vsebino besedilne datoteke. Prva vrstica številnih besedilnih datotek vsebuje naslov datoteke, včasih pa je treba pri tiskanju vsebine datoteke prvo vrstico preskočiti. V tej vadnici vam bomo pokazali, kako to narediti z ukazom 'awk'.
Ustvarite besedilno datoteko
Če želite nadaljevati s to vadnico, ustvarite besedilno datoteko, ločeno z zavihki seznam knjig.txt z naslednjo vsebino. Ta datoteka vsebuje seznam knjig z ustreznimi avtorji. V tej vadnici vam bomo pokazali, kako natisniti različne dele te datoteke po preskoku prve vrstice.
Kibernetska varnost z bashom Paulom Tronconejem, Carlom AlbingomUkazna vrstica Kung Fu Jason Cannon
Linux ukazna vrstica Travis Booth
Bash v preprostih korakih Mike McGrath
Unix v preprostih korakih Mike McGrath
Primer 1: Preskočite prvo vrstico datoteke z uporabo NR in operatorja '>'
Spremenljivka NR označuje število zapisov v datoteki. Naslednji ukaz 'awk' s spremenljivko NR preskoči prvo vrstico datoteke. Vrednost NR je 1 za prvo vrstico. Naslednji ukaz bo natisnil vrstice, za katere je vrednost NR večja od 1.
$ cat booklist.txt$ awk '(NR> 1)' knjižni seznam.txt
Naslednji izhod bo prikazan po zagonu zgornjih ukazov. Izhod vključuje vse vrstice, razen prve vrstice datoteke.
Primer 2: Preskočite prvo vrstico z uporabo NR in znaka '!= 'operator
Naslednji ukaz 'awk' je podoben tistemu v prejšnjem primeru. Vendar pa!= 'namesto'> 'je uporabljen operator primerjave.
$ cat booklist.txt$ awk 'NR!= 1 'seznam knjig.txt
Naslednji izhod bo prikazan po zagonu zgornjih ukazov. Rezultat prikazuje vse vrstice, razen prve vrstice datoteke.
Primer 3: Preskočite prvo vrstico datoteke z uporabo pogojnega stavka
Naslednji ukaz 'awk' bo natisnil vrstice datoteke, če je izjava if resnična. Tukaj bo stavek if resničen le, če vrednost NR ni enaka 1.
$ cat booklist.txt$ awk 'if (NR!= 1) print 'knjižni seznam.txt
Naslednji izhod bo prikazan po zagonu zgornjih ukazov. Rezultat vključuje vse vrstice, razen prve vrstice datoteke.
4. primer: Natisnite imena knjig iz datoteke, vendar preskočite prvo vrstico
V tem primeru se za tiskanje vseh imen knjig, razen prvega, uporabljata dva ukaza 'awk'. Ukaz 'awk' bo prebral prvi stolpec iz datoteke na podlagi ločila polja (\ t) in poslal izhod v drugi ukaz 'awk'. Drugi ukaz 'awk' bo natisnil želeni izhod.
$ cat booklist.txt$ awk -F "\ t" 'print $ 1' seznam knjig.txt | awk 'NR!= 1 print '
Naslednji izhod bo prikazan po zagonu zgornjih ukazov. Na izhodu so prikazana vsa imena knjig, razen imen prve knjige.
Primer 5: Formatirajte vsebino datoteke po preskoku prve vrstice
Možnost '-F', spremenljivka NR in funkcija printf se uporabljajo v naslednjem ukazu 'awk' za ustvarjanje formatiranega izhoda po preskoku prve vrstice. Ukaz bo vsebino datoteke razdelil na stolpce glede na \ t, printf pa bo natisnil prvi in drugi stolpec, ko bo vrednost NR vsaj 2.
$ cat booklist.txt$ awk -F '\ t' 'NR> = 2 printf "% 30s% 20s \ n", $ 1, $ 2' seznam knjig.txt
Naslednji izhod bo prikazan po zagonu zgornjih ukazov. Rezultat prikazuje formatirano vsebino datoteke, razen prve vrstice datoteke.
Primer 6: Po preskoku prve vrstice s pomočjo NR in NF natisnite imena knjig
Naslednji ukaz 'awk' uporablja možnost '-F' in NR in NF za tiskanje imen knjig po preskoku prve knjige. Možnost '-F' se uporablja za ločevanje vsebine baze datotek na \ t. NR se uporablja za preskok prve vrstice, NF pa samo za tiskanje prvega stolpca.
$ cat booklist.txt$ awk -F '\ t' 'NR> 1 && NF = 1' seznam knjig.txt
Naslednji izhod bo prikazan po zagonu zgornjih ukazov. Rezultat vključuje vsa imena knjig v datoteki, razen imen prve knjige.
7. primer: Natisnite oblikovana imena avtorjev po preskoku prve vrstice
Naslednji ukaz 'awk' uporablja možnost '-F' in pogojni stavek za tiskanje imen avtorjev po preskoku prve vrstice. Tu se vrednost NR uporablja v pogoju if. Tu bo namesto vsebine iz prve vrstice kot prva vrstica natisnjeno »Ime avtorja: \ n \ n«. Imena avtorjev iz datoteke bodo natisnjena za druge vrednosti NR.
$ cat booklist.txt$ awk -F '\ t' 'if (NR == 1) printf "\ nIme avtorja: \ n \ n"; sicer natisni "% s \ n", $ 2 'seznam knjig.txt
Naslednji izhod bo prikazan po zagonu zgornjih ukazov. Na izhodu je z novo vrstico prikazano besedilo »Ime avtorja« in natisnjena so vsa imena avtorjev, razen prvega.
Zaključek
Prvo vrstico datoteke lahko preskočite z različnimi ukazi Linux. Kot je prikazano v tej vadnici, lahko z ukazom 'awk' preskočite prvo vrstico datoteke. Omeniti je mogoče, da lahko spremenljivko NR ukaza 'awk' preskočite prvo vrstico katere koli datoteke.