Weboldal keresés

Az STDIN awk bemenetének olvasása Linux alatt – 7. rész


Az Awk eszközsorozat korábbi részeiben a bemeneti bevitelt főként fájl(ok)ból vizsgáltuk, de mi van akkor, ha az STDINből szeretné olvasni a bemenetet.

Az Awk sorozatnak ebben a 7. részében néhány olyan példát tekintünk meg, amelyekre más parancsok kimenetét szűrheti ahelyett, hogy fájlból olvasná be a bemenetet.

Kezdjük a dir segédprogrammal, amely az ls parancshoz hasonlóan működik, az alábbi első példában a dir -l parancs kimenetét használjuk az Awk bemeneteként, hogy kinyomtassuk a tulajdonos felhasználónevét, csoportnevét és fájljait. /tulajdonosa az aktuális könyvtárban:

dir -l | awk '{print $3, $4, $9;}'

Vessen egy pillantást egy másik példára, ahol awk kifejezéseket használunk. Itt a root felhasználó tulajdonában lévő fájlokat szeretnénk kinyomtatni egy kifejezés használatával a karakterláncok szűrésére, mint az alábbi awk parancsban:

dir -l | awk '$3=="root" {print $1,$3,$4, $9;} '

A fenti parancs tartalmazza a (==) összehasonlító operátort, amely segít kiszűrni az aktuális könyvtárban található fájlokat, amelyek a root felhasználó tulajdonában vannak. Ez a $3== ”root ” kifejezéssel érhető el.

Nézzünk egy másik példát arra, amikor egy awk összehasonlító operátort használunk egy bizonyos karakterlánc egyeztetésére.

Itt a cat segédprogramot használtuk a tecmint_deals.txt nevű fájl tartalmának megtekintéséhez, és csak a Tech típusú ügyleteket szeretnénk megtekinteni, ezért futtatjuk a a következő parancsok:

cat tecmint_deals.txt
cat tecmint_deals.txt | awk '$4 ~ /tech/{print}'
cat tecmint_deals.txt | awk '$4 ~ /Tech/{print}'

A fenti példában a ~ /pattern/ összehasonlító operátort használtuk, de két paranccsal próbálunk kihozni valami nagyon fontosat.

Ha a parancsot a tech mintával futtatja, akkor semmi sem kerül kinyomtatásra, mert nincs ilyen típusú ügylet, de a Tech esetén ajánlatokat kap írja be a Tech kifejezést.

Ezért mindig legyen óvatos, amikor ezt az összehasonlító operátort használja, mivel érzékeny a kis- és nagybetűkre, amint azt fentebb láttuk.

Mindig használhatja egy másik parancs kimenetét az awk bemeneteként, ahelyett, hogy egy fájlból olvasná be a bemenetet, ez nagyon egyszerű, ahogy a fenti példákban megnéztük.

Reméljük, hogy a példák elég világosak voltak ahhoz, hogy megértsd, ha bármilyen aggálya van, kifejezheti azokat az alábbi megjegyzés részben, és ne felejtse el megnézni a sorozat következő részét, ahol az awk funkciókat fogjuk megvizsgálni. például változók, numerikus kifejezések és hozzárendelési operátorok.