'tab' koristi se kao separator u datoteci koja je razdvojena karticama. Ova vrsta tekstualne datoteke stvorena je za pohranu različitih vrsta tekstualnih podataka u strukturiranom formatu. U Linuxu postoje različite vrste naredbi za raščlanjivanje ove vrste datoteka. Naredba 'awk' jedan je od načina raščlanjivanja datoteke razdvojene karticama na različite načine. Upotreba naredbe 'awk' za čitanje datoteke razdvojene karticama prikazana je u ovom vodiču.
Stvorite datoteku razdvojenu karticama:
Stvorite tekstualnu datoteku s imenom korisnika.txt sa sljedećim sadržajem za testiranje naredbi ovog vodiča. Ova datoteka sadrži korisničko ime, e-adresu, korisničko ime i lozinku.
korisnika.txt
Ime E-mail Korisničko ime LozinkaDoktor medicine. Robin [zaštićen e-poštom] robin89 563425
Nila Hasan [zaštićena e-poštom] nila78 245667
Mirza Abbas [e-mail zaštićen] mirza23 534788
Aornob Hasan [zaštićen e-poštom] arnob45 778473
Nuhas Ahsan [zaštićen e-poštom] nuhas34 563452
Primjer 1: Ispišite drugi stupac datoteke razdvojene karticama pomoću opcije -F
Sljedeća naredba 'sed' ispisat će drugi stupac tekstualne datoteke razdvojene karticama. Evo, '-F' opcija se koristi za definiranje separatora polja datoteke.
$ mačka korisnika.txt$ awk -F '\ t' 'print $ 2' korisnici.txt
Sljedeći će se izlaz pojaviti nakon pokretanja naredbi. Drugi stupac datoteke sadrži adrese e-pošte korisnika koje se prikazuju kao izlaz.
Primjer 2: Ispišite prvi stupac datoteke razdvojene karticama pomoću FS varijable
Sljedeća naredba 'sed' ispisat će prvi stupac tekstualne datoteke razdvojene karticama. Ovdje, FS Varijabla (Field Separator) koristi se za definiranje separatora polja datoteke.
$ mačka korisnika.txt$ awk 'print $ 1' FS = '\ t' korisnici.txt
Sljedeći će se izlaz pojaviti nakon pokretanja naredbi. Prvi stupac datoteke sadrži korisnikova imena koja se prikazuju kao izlaz.
Primjer-3: Ispišite treći stupac datoteke razdvojene karticama oblikovanjem
Sljedeća naredba 'sed' ispisat će treći stupac tekstualne datoteke razdvojene karticama s oblikovanjem pomoću FS varijabilna i printf. Evo, FS varijabla koristi se za definiranje separatora polja datoteke.
$ mačka korisnika.txt$ awk 'BEGIN FS = "\ t" printf "% 10s \ n", $ 3' korisnika.txt
Sljedeći će se izlaz pojaviti nakon pokretanja naredbi. Treći stupac datoteke sadrži korisničko ime koje je ovdje ispisano.
Primjer 4: Ispišite treći i četvrti stupac datoteke razdvojene karticama pomoću OFS-a
OFS (Output Field Separator) koristi se za dodavanje separatora polja u izlaz. Sljedeća naredba 'awk' podijelit će sadržaj datoteke na temelju separatora tab (\ t) i ispisati 3. i 4. stupac koristeći tab (\ t) kao separator.
$ mačka korisnika.txt$ awk -F "\ t" 'OFS = "\ t" print $ 3, $ 4> ("output.txt ") 'korisnika.txt
$ mačka izlaz.txt
Sljedeći će se izlaz pojaviti nakon pokretanja gornjih naredbi. Treći i četvrti stupac sadrže korisničko ime i lozinku, koji su ovdje ispisani.
Primjer 5: Zamijenite određeni sadržaj datoteke razdvojene karticama
funkcija sub () koristi se u 'awk za naredbu za zamjenu. Sljedeća naredba "awk" pretražit će broj 45 i zamijeniti brojem 90 ako broj za pretraživanje postoji u datoteci. Nakon zamjene, sadržaj datoteke pohranit će se u izlaz.txt datoteku.
$ mačka korisnika.txt$ awk -F "\ t" 'sub (/ 45 /, 90); print' korisnika.txt> izlaz.txt
$ mačka izlaz.txt
Sljedeći će se izlaz pojaviti nakon pokretanja gornjih naredbi. Izlaz.txt datoteka prikazuje modificirani sadržaj nakon primjene zamjene. Ovdje se sadržaj 5. retka izmijenio, a 'arnob45' promijenio je u 'arnob90'.
Primjer 6: Dodajte niz na početak svakog retka datoteke razdvojene karticama
U nastavku, naredba 'awk', opcija '-F' koristi se za dijeljenje sadržaja datoteke na temelju kartice (\ t). OFS je koristio za dodavanje zareza (,) kao separatora polja u izlazu. funkcija sub () koristi se za dodavanje niza '- →' na početak svakog retka izlaza.
$ mačka korisnika.txt$ awk -F "\ t" 'OFS = ","; pod (/ ^ /, "---->"); ispis korisnika $ 1, $ 2, $ 3'.txt
Sljedeći će se izlaz pojaviti nakon pokretanja gornjih naredbi. Svaka vrijednost polja odvojena je zarezom (,), a niz se dodaje na početak svakog retka.
Primjer 7: Zamijenite vrijednost datoteke razdvojene karticama upotrebom funkcije gsub ()
Funkcija gsub () koristi se u naredbi 'awk' za globalnu zamjenu. Sve vrijednosti niza datoteke zamijenit će mjesto podudaranja uzorka pretraživanja. Glavna razlika između funkcija sub () i gsub () je u tome što funkcija sub () zaustavlja zadatak zamjene nakon pronalaska prvog podudaranja, a funkcija gsub () pretražuje uzorak na kraju datoteke radi zamjene. Sljedeća naredba "awk" pretražit će riječ "nila" i "Mira" globalno u datoteci i zamijeniti sve pojave tekstom "Nevaljano ime", gdje se podudara riječ za pretraživanje.
$ mačka korisnika.txt$ awk -F '\ t' 'gsub (/ nila | Mira /, "Neispravno ime"); print 'korisnika.txt
Sljedeći će se izlaz pojaviti nakon pokretanja gornjih naredbi. Riječ „nila“ postoji dva puta u 3. retku datoteke koja je u izlazu zamijenjena riječju „Neispravno ime“.
Primjer 8: Ispišite formatirani sadržaj iz datoteke razdvojene karticama
Sljedeća naredba "awk" ispisat će prvi i drugi stupac datoteke s oblikovanjem pomoću printf. Izlaz će prikazati ime korisnika dodavanjem adrese e-pošte u zagrade.
$ mačka korisnika.txt$ awk -F '\ t' 'printf "% s (% s) \ n", $ 1, $ 2' korisnika.txt
Sljedeći će se izlaz pojaviti nakon pokretanja gornjih naredbi.
Zaključak
Bilo koja datoteka razdvojena karticama može se lako raščlaniti i ispisati s drugim graničnikom pomoću naredbe 'awk'. Načini raščlanjivanja datoteka razdvojenih karticama i ispisa u različitim formatima prikazani su u ovom vodiču na više primjera. Upotreba funkcija sub () i gsub () u naredbi 'awk' za zamjenu sadržaja datoteke razdvojene karticama također je objašnjena u ovom vodiču. Nadam se da će ovaj vodič pomoći čitateljima da lako raščlane datoteku razdvojenu karticama nakon što pravilno uvježbaju primjere ovog vodiča.