Awk

A karakterláncok fájljának felosztása az Awk segítségével

A karakterláncok fájljának felosztása az Awk segítségével
A Linux awk parancs (a fejlesztők nevéből rövidítve; Aho, Weinberger és Kernighan) nagyszerű módja a karakterláncfájlok feldolgozásának és elemzésének. Annak érdekében, hogy a fájlok informatívabbak legyenek, sorok és oszlopok formájában kell őket rendezni. Ezután az awk használatával ezeket a fájlokat használhatja:

Ebben a cikkben elmagyarázzuk az awk parancs alapvető használatát és azt, hogy miként lehet felvenni egy karakterláncfájlt. A cikk példáit egy Debian 10 Buster rendszeren hajtottuk végre, de a legtöbb Linux disztribúción könnyen megismételhetők.

A használni kívánt mintafájl

A string fájlok mintafájlja, amelyet az awk parancs használatának bemutatásához fogunk használni, a következő:

Ezt jelzi a mintafájl minden oszlopa:

1. példa: Az Awk segítségével nyomtathatja ki a fájl összes sorát

A megadott fájl minden egyes sorának kinyomtatása az awk parancs alapértelmezett viselkedése. Az awk parancs következő szintaxisában nem adunk meg semmilyen mintát, amelyet az awk kinyomtatna, ezért a parancsnak a „print” műveletet kell alkalmaznia a fájl minden sorára.

Szintaxis:

$ awk 'print' fájlnév.txt

Példa:

Ebben a példában azt mondom az awk parancsnak, hogy soronként nyomtassa ki a mintafájlom tartalmát.

$ awk 'print' minta_fájl.txt

2. példa: Az awk használatával csak az adott mintának megfelelő sorokat nyomtathatja ki

Az awk segítségével megadhat egy mintát, és a parancs csak az adott mintának megfelelő vonalakat nyomtatja ki.

Szintaxis:

$ awk '/ pattern_to_be_matched / print' fájlnév.txt

Példa:

Ha a minta fájlból csak azokat a sorokat akarom kinyomtatni, amelyek tartalmazzák a 'B' változót, akkor a következő parancsot használhatom:

$ awk '/ B / print' minta_fájl.txt

A példa értelmesebbé tétele érdekében hadd nyomtassam ki csak azokat az adatokat, akik professzorok.

$ awk '/ professzor / print' minta_fájl.txt

A parancs csak azokat a sorokat / bejegyzéseket nyomtatja ki, amelyek tartalmazzák a „professzor” karakterláncot, így értékesebb információkkal rendelkezünk az adatokból.

3. példa. Az awk segítségével ossza fel a fájlt úgy, hogy csak meghatározott mezőket / oszlopokat nyomtasson

A teljes fájl kinyomtatása helyett az awk beállításával csak a fájl egyes oszlopait nyomtathatja ki. Az Awk alapértelmezés szerint oszloprekordként kezeli az összes, szóközzel elválasztott szót. A rekordot egy $ N változóban tárolja. Ahol $ 1 az első szót jelenti, $ 2 tárolja a második szót, $ 3 a negyediket stb. A $ 0 az egész sort eltárolja, így a ki sor kerül kinyomtatásra, az 1. példában leírtak szerint.

Szintaxis:

$ awk 'print $ N,… .' fájl név.txt

Példa:

A következő parancs csak a mintafájlom első oszlopát (nevét) és a második oszlopát (tárgyát) nyomtatja ki:

$ awk 'print $ 1, $ 2' minta_fájl.txt

4. példa: Az Awk segítségével számolja ki és nyomtassa ki azoknak a soroknak a számát, amelyekben a minta illeszkedik

Mondhatod az awk-nak, hogy számolja meg a megadott mintának megfelelő vonalak számát, majd adja ki azt a 'számot'.

Szintaxis:

$ awk '/ pattern_to_be_matched / ++ cnt END print "Count =", cnt' nyomtatás
fájl név.txt

Példa:

Ebben a példában meg akarom számolni az „angol” tantárgyat oktatók számát. Ezért elmondom az awk parancsnak, hogy illeszkedjen az „angol” mintához, és kinyomtatom a sorok számát, amelyekben ez a minta illeszkedik.

$ awk '/ english / ++ cnt END print "Count =", cnt' minta_fájl.txt

Az itteni számlálás azt sugallja, hogy 2 ember tanít angolul a minta irat-nyilvántartásokból.

5. példa: Az awk használatával csak olyan sorokat nyomtathat, amelyeknél megadottnál több karakter van

Ehhez a feladathoz a beépített awk függvényt fogjuk használni. Ez a függvény adja vissza a bemeneti karakterlánc hosszát. Így, ha azt akarjuk, hogy az awk csak a karakterszámnál nagyobb vagy annál kevesebb sorokat nyomtasson, akkor a hosszúságfüggvényt a következő módon használhatjuk:

Számnál nagyobb karakterű sorok nyomtatásához:

$ awk 'length ($ 0)> n' fájlnév.txt

Számoknál kevesebb karakterű sorok nyomtatásához:

$ awk 'hossz ($ 0) < n' filename.txt

Ahol n a sorokhoz megadandó karakterek száma.

Példa:

A következő parancs csak azokat a sorokat nyomtatja ki a mintafájlomból, amelyek karaktere meghaladja a 30-at:

$ awk 'hossz ($ 0)> 30' minta_fájl.txt

6. példa: Az awk segítségével mentse a parancs kimenetét egy másik fájlba

A '>' átirányítási operátor használatával az awk paranccsal nyomtathatja ki a kimenetét egy másik fájlba. Így tudja használni:

$ awk 'criteria_to_print "fájlnév.txt> outputfile.txt

Példa:

Ebben a példában az átirányítási operátort fogom használni az awk paranccsal, hogy csak az alkalmazottak nevét (1. oszlop) nyomtassam új fájlba:

$ awk 'print $ 1' minta_fájl.txt> alkalmazott_nevek.txt

A cat parancsokkal igazoltam, hogy az új fájl csak az alkalmazottak nevét tartalmazza.

7. példa: Az awk segítségével csak nem üres sorokat nyomtathat ki egy fájlból

Az Awk tartalmaz néhány beépített parancsot, amelyekkel kiszűrheti a kimenetet. Például az NF paranccsal meg lehet tartani az aktuális bemeneti rekord mezőinek számát. Itt az NF paranccsal csak a fájl nem üres sorait nyomtatjuk ki:

$ awk 'NF> 0' minta_fájl.txt

Nyilvánvalóan a következő paranccsal nyomtathatja ki az üres sorokat:

$ awk 'NF < 0' sample_file.txt

8. példa: Az awk segítségével számolja meg a fájl összes sorát

Egy másik beépített függvény, az úgynevezett NR, megszámolja az adott fájl bemeneti rekordjainak (általában sorainak) számát. Ezt a függvényt az awk fájlban a következőképpen használhatja a fájl sorainak számításához:

$ awk 'END print NR' minta_fájl.txt

Ez volt az alapvető információ, amelyet el kell kezdeni a fájlok felosztásával az awk paranccsal. Ezen példák kombinációjával értelmesebb információkat nyerhet ki a karakterláncok fájljából az awk-n keresztül.

AppyMouse képernyős Trackpad és egérmutató a Windows táblagépekhez
A táblagép-felhasználók gyakran hiányolják az egérmutatót, különösen akkor, ha szokták használni a laptopokat. Az érintőképernyős okostelefonok és táb...
Az egér középső gombja nem működik a Windows 10 rendszerben
A középső egérgomb segít átgörgetni a hosszú weboldalakat és a sok adatot tartalmazó képernyőket. Ha ez leáll, akkor a billentyűzet segítségével görge...
Hogyan lehet megváltoztatni a bal és jobb egérgombokat a Windows 10 PC-n
Elég általános, hogy az összes számítógépes egéreszközt ergonómikusan a jobbkezes felhasználók számára tervezték. De vannak olyan egéreszközök, amelye...