Awk

Az AWK használata Linuxon

Az AWK használata Linuxon

A Linux által kínált segédprogramok gyakran követik a UNIX tervezés filozófiáját. Bármely eszköznek kicsinek kell lennie, sima szöveget használjon az I / O-hoz, és modulárisan kell működnie. Az örökségnek köszönhetően a legfinomabb szövegfeldolgozási funkciókkal rendelkezünk olyan eszközök segítségével, mint a sed és az awk.

Linux alatt az awk eszköz előre telepítve van az összes Linux disztribúcióra. Az AWK maga egy programozási nyelv. Az AWK eszköz csak az AWK programozási nyelv tolmácsa. Ebben az útmutatóban tekintse meg az AWK használatát Linux rendszeren.

AWK használat

Az AWK eszköz akkor hasznos, ha a szövegeket kiszámítható formátumban rendezik. Nagyon jó a táblázatos adatok elemzésében és manipulálásában. Soronként működik, a teljes szövegfájlon.

Az awk alapértelmezett viselkedése a szóközök (szóközök, tabulátorok stb.) Használata.) a mezők elválasztására. Szerencsére sok Linux konfigurációs fájl ezt a mintát követi.

Alapszintaktika

Így néz ki az awk parancsszerkezete.

$ awk '// ; ; '

A parancs részei eléggé magától értetődőek. Az Awk a keresés vagy a művelet része nélkül is működhet. Ha semmi nincs megadva, akkor a mérkőzés alapértelmezett művelete csak a nyomtatás lesz. Alapvetõen az awk kinyomtatja a fájlban található összes találatot.

Ha nincs megadva keresési minta, akkor az awk elvégzi a megadott műveleteket a fájl minden egyes sorában.

Ha mindkét részt megadjuk, akkor az awk a mintát használja annak meghatározására, hogy az aktuális vonal tükrözi-e. Ha egyezik, akkor az awk végrehajtja a megadott műveletet.

Ne feledje, hogy az awk átirányított szövegeken is működhet. Ezt úgy érhetjük el, hogy a parancs tartalmát átküldjük az awk cselekvésre. Tudjon meg többet a Linux pip parancsról.

Bemutató célokra itt egy minta szövegfájl. 10 sort tartalmaz, soronként 2 szót.

$ macskaminta.txt

Reguláris kifejezés

Az egyik legfontosabb funkció, amely az awk-t hatékony eszközzé teszi, a reguláris kifejezés támogatása (röviden regex). A reguláris kifejezés egy karakterlánc, amely egy bizonyos karaktermintát képvisel.

Íme egy lista a leggyakoribb reguláris kifejezés-szintaxisokról. Ezek a regex szintaxisok nem csak az awk-ra vonatkoznak. Ezek szinte univerzális regexszintaxisok, így ezek elsajátítása más, rendszeres kifejezést magában foglaló alkalmazásokban / programozásban is segítséget nyújt.

  • Alapvető karakterek: Az összes alfanumerikus karakter aláhúzza (_) stb.
    • Karakterkészlet: A dolgok megkönnyítése érdekében vannak karaktercsoportok a regexben. Például nagybetű (A-Z), kisbetű (a-z) és számjegyek (0–9).
  • Meta-karakterek: Ezek olyan karakterek, amelyek a hétköznapi karakterek kibővítésének különböző módjait magyarázzák.
    • Időszak (.): Bármely karakteregyezés a pozícióban érvényes (kivéve egy új sort).
    • Csillag (*): Az azt megelőző közvetlen karakter nulla vagy több létezése érvényes.
    • Zárójel ([]): Az egyezés akkor érvényes, ha a pozícióban a zárójelben szereplő bármely karakter egyezik. Kombinálható karakterkészletekkel.
    • Karet (^): A mérkőzésnek a sor elején kell lennie.
    • Dollár ($): A meccsnek a sor végén kell lennie.
    • Visszavonás (\): Ha bármilyen metakaraktert kell használni a szó szoros értelmében.

A szöveg nyomtatása

A szöveges fájl teljes tartalmának kinyomtatásához használja a print parancsot. A keresési minta esetében nincs meghatározva minta. Tehát az awk kinyomtatja az összes sort.

$ awk 'print' minta.txt

Itt a „print” egy AWK parancs, amely kinyomtatja a bemenet tartalmát.

Karakterlánc-keresés

Az AWK alapvető szöveges keresést végezhet a megadott szövegen. A minta részben meg kell találni a szöveget.

A következő parancsban az awk a „gyors” szöveget keresi a fájlminta összes során.txt.

$ awk '/ quick /' minta.txt

Most használjunk néhány reguláris kifejezést a keresés finomhangolására. A következő parancs kinyomtatja az összes olyan sort, amelynek elején „barna” van.

$ awk '/ ^ barna /' minta.txt

Mit szólnál ahhoz, ha találsz valamit a sor végén? A következő parancs kinyomtatja az összes sort, amelynek végén „gyors” van.

$ awk '/ gyors $ /' minta.txt

Vadkártya minta

A következő példa a caret használatát mutatja be (.). Itt az „e” karakter előtt tetszőleges két karakter lehet.

$ awk '/… e /' minta.txt

Vadkártya minta (csillaggal)

Mi van, ha tetszőleges számú karakter lehet a helyszínen? Használja a csillagot (*), hogy megfeleljen a pozíció bármely lehetséges karakterének. Itt az AWK meg fogja egyezni az összes olyan sort, amelyen bármennyi karakter van a „the” után.

$ awk '/ a * /' minta.txt

Zárójeles kifejezés

A következő példa bemutatja a zárójeles kifejezés használatát. Zárójeles kifejezés azt mondja, hogy a helyszínen az egyezés akkor lesz érvényes, ha megegyezik a zárójelek által bezárt karakterkészlettel. Például a következő parancs a „The” és a „Tee” kifejezéseket egyezik meg, mint érvényes egyezéseket.

$ awk '/ T [he] e /' minta.txt

Van néhány előre definiált karakterkészlet a reguláris kifejezésben. Például a nagybetűk halmaza „A-Z”. A következő parancsban az awk megegyezik az összes olyan szóval, amely nagybetűt tartalmaz.

$ awk '/ [A-Z] /' minta.txt

Vessen egy pillantást a következő karakterkészletek használatára zárójeles kifejezéssel.

  • [0-9]: Egy számjegyet jelöl
  • [a-z]: Egyetlen kisbetűt jelöl
  • [A-Z]: Egyetlen nagybetűt jelöl
  • [a-zA-z]: egyetlen betűt jelöl
  • [a-zA-z 0-9]: Egyetlen karaktert vagy számjegyet jelöl.

Awk előre definiált változók

Az AWK egy csomó előre definiált és automatikus változóval rendelkezik. Ezek a változók megkönnyíthetik az AWK-val történő programok és szkriptek írását.

Íme néhány a leggyakoribb AWK-változók közül, amelyekkel találkozhat.

  • FÁJL NÉV: Az aktuális bemeneti fájl fájlneve.
  • RS: A rekordelválasztó. Az AWK jellege miatt egy-egy rekordot dolgoz fel. Itt ez a változó határozza meg az adatfolyam rekordokra történő felosztásához használt elválasztót. Alapértelmezés szerint ez az érték az újsor karakter.
  • NR: Az aktuális bemeneti rekord száma. Ha az RS érték alapértelmezett, akkor ez az érték jelzi az aktuális bemeneti sor számát.
  • FS / OFS: A mezőelválasztóként használt karakter (ek). Miután elolvasta, az AWK feloszt egy rekordot különböző mezőkre. A határolót az FS értéke határozza meg. Nyomtatáskor az AWK újra csatlakozik az összes mezőhöz. Ekkor azonban az AWK az OFS elválasztót használja az FS elválasztó helyett. Általában az FS és az OFS egyaránt megegyezik, de nem kötelező.
  • NF: Az aktuális rekord mezőinek száma. Ha az alapértelmezett „szóköz” értéket használja, akkor az megegyezik az aktuális rekord szavainak számával.
  • ORS: A kimeneti adatok rekordelválasztója. Az alapértelmezett érték az újsor karakter.

Ellenőrizzük őket működés közben. A következő parancs az NR változóval nyomtatja ki a 2. sort a minta 4. sorára.txt. Az AWK olyan logikai operátorokat is támogat, mint a logikai és (&&).

$ awk 'NR> 1 && NR < 5' sample.txt

Egy adott érték hozzárendeléséhez egy AWK változóhoz használja a következő szerkezetet.

$ awk '// ; ; ' =,

Például az összes üres sor eltávolításához a bemeneti fájlból módosítsa az RS értékét lényegében semmire. Ez egy trükk, amely homályos POSIX szabályt használ. Meghatározza, hogy ha az RS értéke üres karaktersorozat, akkor a rekordokat egy szekvencia választja el, amely egy új sorból áll, egy vagy több üres sorral. A POSIX rendszerben egy üres, tartalom nélküli sor teljesen üres. Ha azonban a sor szóközöket tartalmaz, akkor nem tekinthető „üresnek”.

$ awk 'print' RS = "minta.txt

További források

Az AWK egy hatalmas eszköz, rengeteg funkcióval. Bár ez az útmutató sokukra kiterjed, még mindig csak az alapok. Az AWK elsajátításához nem csak ez kell. Ennek az útmutatónak szép bevezetőnek kell lennie az eszközhöz.

Ha valóban el akarja sajátítani az eszközt, akkor itt van néhány további forrás, amelyet érdemes megnéznie.

  • Vágja le a szóközt
  • Feltételes utasítás használata
  • Oszloptartomány nyomtatása
  • Regex az AWK-val
  • 20 AWK példa

Az internet nagyon jó hely arra, hogy megtanuljanak valamit. Rengeteg fantasztikus oktatóanyag található az AWK alapjairól a nagyon haladó felhasználók számára.

Végső gondolat

Remélhetőleg ez az útmutató segített megérteni az AWK alapjait. Bár eltarthat egy ideig, az AWK elsajátítása rendkívül megtérül az általa nyújtott hatalom szempontjából.

Boldog számítástechnika!

Csata a Wesnoth bemutatóért
A Battle for Wesnoth az egyik legnépszerűbb nyílt forráskódú stratégiai játék, amelyet jelenleg játszhatsz. Ez a játék nem csak nagyon hosszú ideje fe...
0 A.D. Bemutató
A sok stratégiai játék közül 0 A.D. átfogó címként és nagyon mély, taktikus játékként képes kiemelkednie annak ellenére, hogy nyílt forráskódú. A játé...
Unity3D bemutató
Bevezetés a Unity 3D-be Az Unity 3D egy erőteljes játékfejlesztő motor. Ez több platformon keresztül lehetővé teszi játékok, mobil, webes, asztali és ...