Kuinka käyttää Awk-tiedostoa kenttien ja sarakkeiden tulostamiseen
Tässä Linux Awk -komentosarjamme osassa tarkastellaan Awkin yhtä tärkeintä ominaisuutta, joka on kenttien muokkaus.
On hyvä tietää, että Awk jakaa automaattisesti sille toimitetut syöttörivit kenttiin, ja kenttä voidaan määritellä joukoksi merkkejä, jotka erotetaan muista kentistä sisäisellä kentän erottimella.
Jos olet perehtynyt Unix/Linuxiin tai teet bash-shell-ohjelmoinnin, sinun tulisi tietää, mikä on sisäisen kentän erotimen (IFS) muuttuja. Oletusarvoinen IFS Awkissa on sarkain ja välilyönti.
Kenttien erottamisen idea toimii Awkissa näin: kun se kohtaa syöttörivin, määritetyn IFS: n mukaan ensimmäinen merkistö on kenttä yksi, johon pääsee käyttämällä $1, toinen merkistö on kenttä kaksi, mikä on käytettävissä käyttäen $2, kolmas merkistö on kenttä kolme, johon pääsee käyttämällä $3 ja niin edelleen viimeiseen merkistöön asti.
Jos haluat ymmärtää tämän Awk-kentän muokkaamisen paremmin, katsokaamme seuraavia esimerkkejä:
Esimerkki 1: Olen luonut tekstitiedoston nimeltä tecmintinfo.txt.
# vi tecmintinfo.txt # cat tecmintinfo.txt
Sitten yritän komentoriviltä tulostaa ensimmäisen, toisen ja kolmannen kentän tiedostosta tecmintinfo.txt alla olevan komennon avulla:
$ awk '//{print $1 $2 $3 }' tecmintinfo.txt TecMint.comisthe
Yllä olevasta lähdöstä näet, että kolmen ensimmäisen kentän merkit tulostetaan IFS: n perusteella, joka on välilyönti:
- Kenttään "TecMint.com" pääsee käyttämällä
$1
. - Kenttään kaksi, joka on "on", pääsee käyttämällä koodia
$2
. - Kenttään kolme, joka on "," pääsee käyttämällä
$3
.
Jos olet huomannut tulostetussa tulostuksessa, kentän arvoja ei eroteta toisistaan, ja tulostus käyttäytyy näin oletusarvoisesti.
Jos haluat nähdä lähdön selvästi kenttäarvojen välissä, sinun on lisättävä (,)
-operaattori seuraavasti:
$ awk '//{print $1, $2, $3; }' tecmintinfo.txt TecMint.com is the
Yksi tärkeä asia, joka on huomioitava ja joka on aina muistettava, on se, että ($)
: n käyttö Awkissa eroaa sen käytöstä komentosarjan komentosarjoissa.
Shell-komentosarjassa ($)
käytetään muuttujien arvon käyttämiseen, kun taas Awk ($)
-käyttöjärjestelmässä sitä käytetään vain kentän sisältöön, mutta ei muuttujien arvo.
Esimerkki 2: Tarkastellaan yhtä muuta esimerkkiä tiedostolla, joka sisältää useita rivejä nimeltä my_shoping.list.
No Item_Name Unit_Price Quantity Price 1 Mouse #20,000 1 #20,000 2 Monitor #500,000 1 #500,000 3 RAM_Chips #150,000 2 #300,000 4 Ethernet_Cables #30,000 4 #120,000
Oletetaan, että haluat tulostaa vain Unit_Price
kustakin ostoslistan nimikkeestä, sinun on suoritettava seuraava komento:
$ awk '//{print $2, $3 }' my_shopping.txt Item_Name Unit_Price Mouse #20,000 Monitor #500,000 RAM_Chips #150,000 Ethernet_Cables #30,000
Awkilla on myös printf
-komento, joka auttaa muotoilemaan tulosta, on mukava tapa, koska näet, että yllä oleva tulos ei ole riittävän selkeä.
Käyttämällä printf
-näppäintä muotoile Tuotteen_nimi ja Yksikköhinta:
$ awk '//{printf "%-10s %s\n",$2, $3 }' my_shopping.txt Item_Name Unit_Price Mouse #20,000 Monitor #500,000 RAM_Chips #150,000 Ethernet_Cables #30,000
Yhteenveto
Kenttien muokkaus on erittäin tärkeää, kun Awk-sovellusta käytetään tekstin tai merkkijonojen suodattamiseen. Se auttaa sinua saamaan tiettyjä tietoja luettelon sarakkeisiin. Muista aina, että ($)
-operaattorin käyttö Awkissa eroaa shell-komentosarjojen käytöstä.
Toivon, että artikkeli oli hyödyllinen sinulle ja jos tarvitset lisätietoja tai kysymyksiä, voit lähettää kommentin kommenttiosioon.