Az „awk” parancs lényeges ismerete nagyon fontos az adatok hatékony feldolgozásakor, és ez a bejegyzés az „awk” parancs legfontosabb jellemzőit ismerteti. Először ellenőrizzük a szintaxist:
$ awk [opciók] [fájl]Néhány gyakran használt opció az alábbi táblázatban található:
választási lehetőség | Leírás |
-F | Fájlelválasztó megadása |
-f | Adja meg az „awk” szkriptet tartalmazó fájlt |
-v | Változó hozzárendeléséhez |
Nézzünk meg néhány példát az „awk” parancs használatáról, és bemutatás céljából készítettem egy szöveges fájlt a testFile.txt:
1. Hogyan nyomtathat ki egy fájl oszlopát az awk paranccsal?
Az „awk” paranccsal meg lehet szerezni a szövegfájl egy adott oszlopát. A fájl tartalmának kinyomtatásához:
$ cat testFile.txt
Most a fájl második oszlopának kinyomtatásához használja:
$ awk 'print $ 2' testFile.txt
Több mező nyomtatásához használja a következő parancsot:
$ awk 'print $ 1, $ 2, $ 3' testFile.txt
Ha nem használja a vesszőt, akkor a kimenet szóköz nélkül lesz:
$ awk 'print $ 1 $ 2 $ 3' testFile.txt
2. A reguláris kifejezés használata awk paranccsal:
A karakterláncok vagy bármely kifejezés egyezéséhez például „//” perjelet használunk, ha például a „History” szakot tanulmányozó emberek nevét szeretné kinyomtatni, akkor használja a következőket:
$ awk '/ History / print $ 2' testFile.txt
A kimenet világosan mutatja, hogy csak „Sam” és „Tommy” tanul a „History” tanfolyamon.
3. A relációs kifejezés használata az „awk” paranccsal:
Egy adott mező tartalmának megfeleltetéséhez relációs kifejezés használható. Ha bármilyen karakterláncot vagy kifejezést egy mezőhöz szeretne illeszteni, jelölje meg a mezőt, és használja a „~” összehasonlító operátort a mintával a következő parancs szerint:
$ awk '$ 3 ~ / is / print $ 2' testFile.txt
A fenti kimenet a 2. oszlop minden mezőjét jeleníti meg minden olyan mezővel szemben, amely a 3. oszlopban az „is” szót tartalmazza.
A fenti parancs ellentétes kimenetének megszerzéséhez használja a! ~ ”Operátor:
$ awk '$ 3! ~ / is / print $ 2 'testFile.txt
Összehasonlításképpen használhatunk olyan operátorokat is, mint a „>” -nál nagyobb és a „<” and equal “=” as well:
$ awk '$ 4> 70 print $ 2' testFile.txt
A kimenet kinyomtatta azoknak a nevét, akik 70-nél több pontot kaptak.
4. A tartományminta használata az awk paranccsal:
Egy tartomány is használható keresésre; egyszerűen használja a „,” vesszőt a tartomány elválasztására az alább említett parancs szerint:
$ awk '/ Joel /, / Marlene / print $ 3' testFile.txt
A kimenet a „Joel” és a „Marlene” tartományba eső alanyokat mutatja a 2. oszlopban. A tartomány = = kettős egyenlőségjelet használhatunk egy tartomány meghatározására; lásd az alábbi példát:
$ awk '$ 4 == 80, $ 4 == 90 print $ 0' testFile.txt
A kimenet a 2. oszlopban szereplő emberek nevét jeleníti meg a 4. oszlop „70–80” jeltartományáig.
5. Hogyan kombinálhatjuk a mintát logikai operátor segítségével:
Az olyan logikai operátorok használata, mint az OR „||,” ÉS „&&”, lehetővé teszik a minták kombinálását a kereséshez. Használja a következő parancsot
$ awk '$ 4> 80 && $ 6> 0.4 print $ 2 'testFile.txt
A fenti parancs kinyomtatja az emberek nevét a 80-nál nagyobb, a hatodik 0-nál nagyobb mezőhöz.4. És csak két rekord teljesíti a feltételt.
6. Az awk parancs speciális kifejezései:
Két különleges kifejezés van:KEZDŐDIK”És„VÉGE”:
BEGIN: Művelet végrehajtása az adatok feldolgozása előtt
VÉGE: Művelet végrehajtása az adatok feldolgozása után
$ awk 'BEGIN print “A feldolgozás megkezdődött”; print $ 2; END print “A feldolgozás befejeződött” 'testFile.txt
7. Az awk parancs hasznos beépített változója:
Az awk parancs különféle változókat tartalmaz, amelyek segítenek az adatfeldolgozásban:
Változó | Leírás |
NF | Megadja az adatok mezőinek számát |
NR | Megadja az aktuális rekord számát |
FÁJL NÉV | Megjeleníti a jelenleg feldolgozás alatt álló fájl nevét |
FS és OFS | Mezőelválasztó és kimeneti mezőelválasztó |
RS és ORS | Elválasztja a rekordot és a kimeneti rekord elválasztót |
Például:
$ awk 'END print "A fájl neve:" FILENAME "" NF "mezők és" NR "rekordok"' testFile.txt
Az „END” -t használjuk, de ha a „BEGIN” -t használja, a kimenet 0 mezőt és 0 rekordot ad.
8. A rekordelválasztó módosítása:
A rekord alapértelmezett elválasztója általában a szóköz; ha van vessző „,” vagy pont „.”Mezőelválasztóként, majd az elválasztóval együtt használja az„ FS ”opciót.
Legyen egy másik fájlunk, ahol az adatmezőket vessző kettőspont választja el egymástól::
$ cat testFile2.txt$ awk 'BEGIN FS = “:” print $ 2' testFile2.txt
Mivel a fájl elválasztója kettőspont, de az „awk” parancs még az ilyen fájlok számára is előnyös, egyszerűen használja az „FS” opciót.
Az „-F” szintén használható:
$ awk -F “:” 'print $ 2' testFile2.txt
Az alapértelmezett rekordelválasztó az „újsor”, és ha a rekordelválasztót „:” értékre szeretné állítani, használja:
$ awk 'BEGIN RS = “:” print $ 1' testFile2.txt
9. Awk műveletek:
Az Awk műveletek apró programok, amelyeket „” zárójelek vesznek körül, és amelyeknél egynél több utasítás pontosvesszővel elválasztva van;.
Az „awk” paranccsal leggyakrabban használt utasítás a „print” utasítás. Például minden rekordhoz szöveget nyomtathat, használjon szöveges karakterláncot idézőjelben:
$ awk '"Az egy mező," $ 2 "tesztfájl.txt
Végezzünk egy egyszerű összegző műveletet az awk használatával:
$ awk 'sum + = $ 4 END printf „% d \ n”, sum' testFile.txt
10. Az awk program létrehozása:
Kezdjük az „awk” programozással, az alábbiakban megadott programozás egyszerűen szorzást végez:
BEGINi = 2
míg (j<4)
print „A 2 szorzása j-vel szorzata az„ i * j;
j++
Mentse a programot a következő névre:myCode.awk”Futtatásához nyissa meg a terminált és írja be:
$ awk -f myCode.awkKövetkeztetés:
Az „awk” parancs praktikus parancs a szöveges fájlok adatainak feldolgozására, beolvasására, például a fájl bármely adott mezőjének elválasztására; az „awk” parancsot használjuk. Ez megkönnyíti a szöveges fájlokból bármilyen formában vagy mintában történő keresést. Ebben az útmutatóban megértjük az „awk” parancs alapjait és használatát. Az „awk” parancs ellenőrzi az adatokat, generál jelentéseket, sőt fájlokat is elemez. Az „awk” egyszerű parancsok használatával a felhasználók apró programokat is írhatnak az adatok hatékonyabb feldolgozása érdekében.