'sarkainta' käytetään erottimena sarkaimilla erotetussa tiedostossa. Tämän tyyppinen tekstitiedosto on luotu tallentamaan erityyppisiä tekstitietoja jäsennetyssä muodossa. Linuxissa on erityyppisiä komentoja tämän tyyppisen tiedoston jäsentämiseksi. 'awk' -komento on yksi tapa jäsentää sarkaimilla erotettua tiedostoa eri tavoin. Tässä opetusohjelmassa on esitetty 'awk' -komennon käyttäminen sarkaimilla erotetun tiedoston lukemiseen.
Luo sarkaimilla erotettu tiedosto:
Luo tekstitiedosto nimeltä käyttäjille.txt seuraavalla sisällöllä testataksesi tämän opetusohjelman komennot. Tämä tiedosto sisältää käyttäjän nimen, sähköpostiosoitteen, käyttäjänimen ja salasanan.
käyttäjille.txt
Nimi Sähköposti Käyttäjätunnus SalasanaMd. Robin [sähköpostin suojattu] robin89 563425
Nila Hasan [sähköposti suojattu] nila78 245667
Mirza Abbas [sähköpostitse suojattu] mirza23 534788
Aornob Hasan [sähköposti suojattu] arnob45 778473
Nuhas Ahsan [sähköposti suojattu] nuhas34 563452
Esimerkki 1: Tulosta sarkaimilla erotetun tiedoston toinen sarake käyttämällä -F-vaihtoehtoa
Seuraava 'sed' -komento tulostaa sarkaimilla erotetun tekstitiedoston toisen sarakkeen. Tässä '-F' Vaihtoehtoa käytetään määrittämään tiedoston kenttäerotin.
$ kissan käyttäjät.txt$ awk -F '\ t' 'print $ 2' käyttäjät.txt
Seuraava tulos tulee näkyviin komentojen suorittamisen jälkeen. Tiedoston toinen sarake sisältää käyttäjän sähköpostiosoitteet, jotka näytetään tulostuksena.
Esimerkki 2: Tulosta sarkaimilla erotetun tiedoston ensimmäinen sarake käyttämällä FS-muuttujaa
Seuraava 'sed' -komento tulostaa sarkaimilla erotetun tekstitiedoston ensimmäisen sarakkeen. Tässä, FS (Field Separator) -muuttujaa käytetään määrittämään tiedoston kenttäerotin.
$ kissan käyttäjät.txt$ awk 'print $ 1' FS = '\ t' käyttäjät.txt
Seuraava tulos tulee näkyviin komentojen suorittamisen jälkeen. Tiedoston ensimmäinen sarake sisältää käyttäjän nimet, jotka näytetään tulosteena.
Esimerkki 3: Tulosta sarkaimilla erotetun tiedoston kolmas sarake muotoilemalla
Seuraava 'sed' -komento tulostaa sarkaimella erotetun tekstitiedoston kolmannen sarakkeen muotoilemalla FS muuttuja ja printf. Tässä FS muuttujaa käytetään määrittämään tiedoston kenttäerotin.
$ kissan käyttäjät.txt$ awk 'BEGIN FS = "\ t" printf "% 10s \ n", $ 3' käyttäjää.txt
Seuraava tulos tulee näkyviin komentojen suorittamisen jälkeen. Tiedoston kolmas sarake sisältää käyttäjänimen, joka on tulostettu tähän.
Esimerkki 4: Tulosta sarkaimilla erotetun tiedoston kolmas ja neljäs sarake OFS: n avulla
OFS: ää (Output Field Separator) käytetään lisäämään kentän erotin lähtöön. Seuraava 'awk' -komento jakaa tiedoston sisällön sarkaimen (\ t) erottimen perusteella ja tulostaa kolmannen ja neljännen sarakkeen käyttämällä sarkainta (\ t) erottimena.
$ kissan käyttäjät.txt$ awk -F "\ t" 'OFS = "\ t" tulosta $ 3, $ 4> ("ulostulo.txt ") 'käyttäjille.txt
$ kissan tuotos.txt
Seuraava lähtö näkyy yllä olevien komentojen suorittamisen jälkeen. Kolmas ja neljäs sarake sisältävät käyttäjänimen ja salasanan, jotka on tulostettu tähän.
Esimerkki 5: Korvaa sarkaimilla erotetun tiedoston tietty sisältö
sub () -funktiota käytetään 'awk: ssä komentamaan korvaamista. Seuraava 'awk' -komento etsii numeroa 45 ja korvaa sen numerolla 90, jos hakunumero on tiedostossa. Korvauksen jälkeen tiedoston sisältö tallennetaan tulosteeseen.txt-tiedosto.
$ kissan käyttäjät.txt$ awk -F "\ t" 'sub (/ 45 /, 90); print' käyttäjät.txt> lähtö.txt
$ kissan tuotos.txt
Seuraava lähtö näkyy yllä olevien komentojen suorittamisen jälkeen. Tuotos.txt-tiedosto näyttää muokatun sisällön korvaamisen jälkeen. Tässä viidennen rivin sisältö on muuttunut, ja 'arnob45' muutetaan arvoksi 'arnob90'.
Esimerkki 6: Lisää merkkijono sarkaimilla erotetun tiedoston jokaisen rivin alkuun
Seuraavassa 'awk' -komentoa '-F' -vaihtoehtoa käytetään jakamaan tiedoston sisältö välilehden perusteella (\ t). OFS on lisännyt pilkun (,) kentän erottimeksi lähtöön. sub () -funktiota käytetään lisäämään merkkijono '- →' lähdön jokaisen rivin alkuun.
$ kissan käyttäjät.txt$ awk -F "\ t" 'OFS = ","; sub (/ ^ /, "---->"); tulosta $ 1, $ 2, $ 3' käyttäjät.txt
Seuraava lähtö näkyy yllä olevien komentojen suorittamisen jälkeen. Jokainen kentän arvo erotetaan pilkulla (,) ja jokaisen rivin alkuun lisätään merkkijono.
Esimerkki 7: Korvaa sarkaimilla erotetun tiedoston arvo gsub () -toiminnon avulla
gsub () -funktiota käytetään awk-komennossa globaaliin korvaamiseen. Kaikki tiedoston merkkijonoarvot korvaavat hakukuvion kohdat. Suurin ero sub () - ja gsub () -funktioiden välillä on se, että sub () -funktio lopettaa korvaustehtävän ensimmäisen vastaavuuden löytämisen jälkeen, ja gsub () -funktio etsii tiedoston lopussa olevaa mallia korvaamista varten. Seuraava 'awk' -komento etsii tiedostosta sanoja 'nila' ja 'Mira' ja korvaa kaikki esiintymät tekstillä 'Virheellinen nimi', jossa hakusana täsmää.
$ kissan käyttäjät.txt$ awk -F '\ t' 'gsub (/ nila | Mira /, "Virheellinen nimi"); tulosta käyttäjät.txt
Seuraava lähtö näkyy yllä olevien komentojen suorittamisen jälkeen. Sana 'nila' on kaksi kertaa tiedoston kolmannella rivillä, joka on korvattu sanalla 'virheellinen nimi' lähdössä.
Esimerkki 8: Tulosta muotoiltu sisältö sarkaimilla erotetusta tiedostosta
Seuraava 'awk' -komento tulostaa tiedoston ensimmäisen ja toisen sarakkeen muotoilemalla printf: n avulla. Lähdössä näkyy käyttäjän nimi liittämällä sähköpostiosoite sulkeisiin.
$ kissan käyttäjät.txt$ awk -F '\ t' 'printf "% s (% s) \ n", $ 1, $ 2' käyttäjää.txt
Seuraava lähtö näkyy yllä olevien komentojen suorittamisen jälkeen.
Johtopäätös
Kaikki sarkaimilla erotetut tiedostot voidaan helposti jäsentää ja tulostaa toisella erottimella käyttämällä awk-komentoa. Tässä opetusohjelmassa on esitetty tapoja jäsentää sarkaimilla erotettuja tiedostoja ja tulostaa eri muodoissa käyttämällä useita esimerkkejä. Sub-optioiden ja gsub () -toimintojen käyttäminen awk-komennossa sarkaimilla erotetun tiedoston sisällön korvaamiseksi selitetään myös tässä opetusohjelmassa. Toivon, että tämä opetusohjelma auttaa lukijoita jäsentämään sarkaimilla erotettua tiedostoa helposti harjoiteltuaan tämän opetusohjelman esimerkkejä.