Postoje različite upotrebe naredbe `awk` u Linuxu. Na primjer, može se koristiti za ispis sadržaja tekstualne datoteke. Prvi redak mnogih tekstualnih datoteka sadrži zaglavlje datoteke, a ponekad se prvi redak mora preskočiti prilikom ispisa sadržaja datoteke. U ovom vodiču pokazat ćemo vam kako izvršiti ovaj zadatak pomoću naredbe `awk`.
Napravite tekstualnu datoteku
Da biste slijedili ovaj vodič, izradite tekstualnu datoteku razgraničenu tabulatorima pod nazivom booklist.txt sa sljedećim sadržajem. Ova datoteka sadrži popis knjiga s odgovarajućim autorima. U ovom vodiču pokazat ćemo vam kako ispisati različite dijelove ove datoteke nakon preskakanja prvog retka.
Kibernetička sigurnost s razbijačem Paulom Tronconeom, Carlom Albingom
Naredbeni redak Kung Fu Jason Cannon
Linuxova naredbena linija Travis Booth
Iskoristite jednostavne korake Mike McGrath
Unix u lakim koracima Mike McGrath
Primjer 1: Preskočite prvi redak datoteke pomoću NR -a i operatora ‘>’
Varijabla NR označava broj zapisa u datoteci. Sljedeća naredba `awk` koristi NR varijablu za preskakanje prvog retka datoteke. Vrijednost NR je 1 za prvi redak. Sljedeća naredba ispisat će retke za koje je vrijednost NR veća od 1.
$mačkabooklist.txt
$awk '(NE> 1)'booklist.txt
Sljedeći izlaz bit će proizveden nakon pokretanja gornjih naredbi. Ispis uključuje sve retke osim prvog retka datoteke.
Primjer 2: Preskočite prvi redak pomoću NR -a i operatora ‘! =’
Sljedeća naredba `awk` slična je onoj u prethodnom primjeru. Međutim, ovdje se umjesto '>' koristi operator usporedbe ‘! =’.
$mačkabooklist.txt$awk 'NR! = 1'booklist.txt
Sljedeći izlaz bit će proizveden nakon pokretanja gornjih naredbi. Izlaz prikazuje sve retke osim prvog retka datoteke.
Primjer 3: Preskočite prvi redak datoteke pomoću uvjetne naredbe
Sljedeća naredba `awk` ispisat će retke datoteke ako je if naredba točna. Ovdje će naredba if biti točna samo ako vrijednost NR nije jednaka 1.
$mačkabooklist.txt$awk '{if (NR! = 1) {print}}'booklist.txt
Sljedeći izlaz bit će proizveden nakon pokretanja gornjih naredbi. Izlaz uključuje sve retke osim prvog retka datoteke.
Primjer 4: Ispišite nazive knjiga iz datoteke, ali preskočite prvi redak
Dvije naredbe `awk` koriste se u ovom primjeru za ispis svih naziva knjiga osim prve. Naredba `awk` će pročitati prvi stupac iz datoteke na temelju separatora polja ( t) i poslati izlaz drugoj naredbi` awk`. Druga naredba `awk` ispisat će željeni izlaz.
$mačkabooklist.txt$awk -F ' t' '{print $ 1}'booklist.txt| awk 'NR! = 1 ispis}'
Sljedeći izlaz bit će proizveden nakon pokretanja gornjih naredbi. Ispis prikazuje sve nazive knjiga osim imena prve knjige.
Primjer 5: Formatirajte sadržaj datoteke nakon što preskočite prvi redak
Opcija '-F', NR varijabla i funkcija printf koriste se u sljedećoj naredbi `awk` za generiranje formatiranog izlaza nakon preskakanja prvog retka. Naredba će podijeliti sadržaj datoteke u stupce na temelju t, a printf će ispisati prvi i drugi stupac kada je vrijednost NR najmanje 2.
$mačkabooklist.txt$awk -F ' t' 'NR> = 2 {printf' %30s %20s n ', $ 1, $ 2}'booklist.txt
Sljedeći izlaz bit će proizveden nakon pokretanja gornjih naredbi. Ispis prikazuje formatirani sadržaj datoteke, isključujući prvi redak datoteke.
Primjer 6: Ispišite nazive knjiga nakon što preskočite prvi redak pomoću NR i NF
Sljedeća naredba `awk` koristi opciju '-F' i NR i NF za ispis naziva knjiga nakon preskakanja prve knjige. Opcija ‘-F’ koristi se za odvajanje sadržaja baze datoteka na t. NR se koristi za preskakanje prvog retka, a NF se koristi za ispis samo prvog stupca.
$mačkabooklist.txt$awk -F ' t' 'NR> 1 && NF = 1'booklist.txt
Sljedeći izlaz bit će proizveden nakon pokretanja gornjih naredbi. Ispis uključuje sve nazive knjiga u datoteci, osim imena prve knjige.
Primjer 7: Ispišite formatirana imena autora nakon što preskočite prvi redak
Sljedeća naredba `awk` koristi opciju '-F' i uvjetni izraz za ispis imena autora nakon preskakanja prvog retka. Ovdje se vrijednost NR koristi u uvjetu if. Ovdje će se ime autora: n n ispisati kao prvi redak umjesto sadržaja iz prvog retka. Imena autora iz datoteke bit će ispisana za ostale vrijednosti NR.
$mačkabooklist.txt$awk -F ' t' '{if (NR == 1) printf' nNaziv autora: n n '; else printf '%s n', $ 2} 'booklist.txt
Sljedeći izlaz bit će proizveden nakon pokretanja gornjih naredbi. Ispis prikazuje tekst, Ime autora: s novim retkom, a sva imena autora ispisuju se osim prvog.
Zaključak
Prvi redak datoteke može se preskočiti pomoću različitih naredbi za Linux. Kao što je prikazano u ovom vodiču, postoje različiti načini preskakanja prvog retka datoteke pomoću naredbe `awk`. Značajno je da se NR varijabla naredbe `awk` može koristiti za preskakanje prvog retka bilo koje datoteke.