Awk

Awk Trim Whitespace

Awk Trim Whitespace
Programozóként előfordulhat, hogy különböző fájlokkal kell dolgoznia az adatok tárolásához és kezeléséhez. Az egyik alapvető fájlkezelési feladat magában foglalja a fájlokban lévő szóközök eltávolítását. A szóközök szóközökből, üres sorokból, nbsp-ből és tabulátorokból állnak. A programozóknak gyakran el kell távolítaniuk a szóközöket, hogy csak a szükséges adatokat tárolják és a felesleges szóközök kiküszöbölhetők legyenek. A szóközök vezethetnek (a vonal elején) vagy a mögött (a vonal végén) szóközök.

Az alábbiakban néhány olyan forgatókönyvet találunk, amelyekben szükség lehet a szóközök eltávolítására:

A szóközök manuálisan eltávolíthatók, ha a fájl csak néhány sort tartalmaz. De több száz sort tartalmazó fájl esetén nehéz lesz manuálisan eltávolítani az összes szóközt. Különféle parancssori eszközök állnak rendelkezésre erre a célra, beleértve a sed, awk, cut és tr. Ezen eszközök között az awk az egyik leghatékonyabb parancs.

Mi az Awk?

Az Awk egy hatékony és hasznos szkriptnyelv, amelyet a szöveg manipulálásában és a jelentések létrehozásában használnak. Az awk parancs rövidítése az egyes emberek (Aho, Weinberger és Kernighan) kezdőbetűivel történik, akik kifejlesztették. Az Awk lehetővé teszi változók, numerikus függvények, karakterláncok és számtani operátorok definiálását; formázott jelentéseket készít; és több.

Ez a cikk elmagyarázza az awk parancs használatát a szóközök vágására. A cikk elolvasása után megtanulja, hogyan kell használni az awk parancsot a következők végrehajtására:

A cikkben szereplő parancsokat egy Ubuntu 20 rendszeren hajtották végre.04 Focal Fossa rendszer. Ugyanezek a parancsok azonban végrehajthatók más Linux disztribúciókon is. Az ebben a cikkben található parancsok futtatásához az alapértelmezett Ubuntu Terminal alkalmazást fogjuk használni. A terminálhoz a Ctrl + Alt + T billentyűparancs segítségével férhet hozzá.

Bemutató célokra a „minta” nevű mintafájlt fogjuk használni.txt.”Az ebben a cikkben szereplő példák végrehajtására.

Az összes fehér mező megtekintése egy fájlban

A fájlban található összes szóköz megjelenítéséhez a cat parancs kimenetét csatolja a tr parancshoz az alábbiak szerint:

$ macskaminta.txt | tr "" "*" | tr "\ t" "&"

Ez a parancs lecseréli az adott fájl összes szóközt a (*) karakterre. A parancs beírása után tisztán láthatja, hogy az összes fehér szóköz (beleértve a vezető és a záró szóközt is) hol található a fájlban.

A következő képernyőkép * karakterei azt mutatják, hogy a mintafájlban hol található az összes szóköz. Az egyetlen * egyetlen szóközt jelent.

Vágja le az összes fehér helyet

Az összes szóköz eltüntetéséhez egy fájlból csatolja az out of cat parancsot az awk parancsra az alábbiak szerint:

$ macskaminta.txt | awk 'gsub (/ /, ""); nyomtatás '

Hol

A fenti parancs az összes szóközt (/ /) helyettesíti semmivel (“”).

A következő képernyőképen láthatja, hogy az összes szóköz, beleértve a vezető és a záró szóközöket is, eltávolításra került a kimenetből.

Vágja le a vezető szóközöket

Ha csak a vezető szóközöket kívánja eltávolítani a fájlból, az alábbiak szerint csatolja az out of cat parancsot az awk parancsra:

$ macskaminta.txt | awk 'sub (/ ^ [\ t] + /, ""); print '

Hol

A fenti parancs a karakterlánc elején (^ [\ t] +) egy vagy több szóközt helyettesít semmivel (“”) a vezető szóközök eltávolításához.

A következő képernyőképen láthatja, hogy az összes vezető szóköz el lett távolítva a kimenetről.

A következő paranccsal ellenőrizheti, hogy a fenti parancs eltávolította-e a vezető szóközöket:

$ macskaminta.txt | awk 'sub (/ ^ [\ t] + /, ""); nyomtatás '| tr "" "*" |
tr "\ t" "&"

Az alábbi képernyőképen jól látható, hogy csak a vezető szóközöket távolították el.

Vágja be a szóközöket

Ha csak a záró szóközöket kívánja eltávolítani egy fájlból, akkor csatolja az out of cat parancsot az awk parancsra az alábbiak szerint:

$ macskaminta.txt | awk 'sub (/ [\ t] + $ /, ""); nyomtatás '

Hol

A fenti parancs a karakterlánc végén egy vagy több szóközt ([\ t] + $) helyettesít semmivel ("") a záró szóközök eltávolításához.

A következő paranccsal ellenőrizheti, hogy a fenti parancs eltávolította-e a záró szóközöket:

$ macskaminta.txt | awk 'sub (/ [\ t] + $ /, ""); nyomtatás '| tr "" "*" | tr "\ t" "&"

Az alábbi képernyőképen jól látható, hogy a záró szóközöket eltávolították.

Vágja le mind a vezető, mind a záró térközöket

A fájlból a vezető és a záró szóközök eltávolításához tegye a out of cat parancsot az awk parancsra az alábbiak szerint:

$ macskaminta.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); print '

Hol

A fenti parancs helyettesíti mind a vezető, mind a záró szóközt (^ [\ t]+ [\ t] + $) semmi („”) nem távolíthatja el őket.

Használja a következő parancsot annak megállapításához, hogy a fenti parancs eltávolította-e a fájl első és záró szóközét is:

$ macskaminta.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); nyomtatás '|
tr "" "*" | tr "\ t" "&"

Az alábbi képernyőképen jól látható, hogy mind a vezető, mind a záró szóközöket eltávolították, és csak a karakterláncok közötti szóköz maradt.

Cserélje ki a több helyet egyetlen szóközzel

Ha több szóközt egyetlen szóközzel szeretne lecserélni, írja be a cat out parancsot az awk parancsra az alábbiak szerint:

$ macskaminta.txt | awk 'gsub (/ [] + /, ""); print '

Hol:

A fenti parancs több szóközt ([] +) egyetlen szóközzel („“) helyettesít.

A következő paranccsal ellenőrizheti, hogy a fenti parancs a több szóközt helyettesítette-e a szóközökkel:

$ macskaminta.txt | awk 'sub (/ [\ t] + $ /, ""); nyomtatás '| | tr "" "*" | tr "\ t" "&"

A minta fájlunkban több szóköz volt. Mint látható, több szóköz van a mintában.A txt fájlt egyetlen szóközzel helyettesítettük az awk paranccsal.

A szóközök kivágásához csak azokban a sorokban, amelyek tartalmaznak egy adott karaktert, például vesszőt, kettőspontot vagy pontosvesszőt, használja az awk parancsot a -F bemeneti elválasztó.

Például az alábbiakban bemutatjuk a mintafájlunkat, amely szóközöket tartalmaz minden sorban.

A szóközök eltávolítása csak vesszőt tartalmazó sorokból (,) a következő:

$ macskaminta1.txt | awk -F, '/, / gsub (/ /, ""); nyomtatás'

Hol (-F,) a beviteli mező elválasztó.

A fenti parancs csak azokat a sorokat távolítja el és jeleníti meg, amelyek tartalmazzák a megadott karaktert (,). A többi vonal érintetlen marad.

Következtetés

Ennyit kell tudnia, hogy az awk paranccsal kivághassa az adatok szóközét. Különböző okokból lehet szükség a szóközök eltávolítására az adatokból. Bármi is legyen az oka, az ebben a cikkben leírt parancsok segítségével egyszerűen levághatja az adatok összes szóközt. Akár levághatja az elülső vagy a befejező fehér szóközöket, mind a vezető, mind a mögötte lévő szóközöket, és a több szóköz helyét egyetlen szóközzel helyettesítheti az awk paranccsal.

OpenTTD vs Simutrans
Saját közlekedési szimuláció létrehozása szórakoztató, pihentető és rendkívül csábító lehet. Ezért meg kell győződnie arról, hogy a lehető legtöbb ját...
OpenTTD bemutató
Az OpenTTD az egyik legnépszerűbb üzleti szimulációs játék. Ebben a játékban létre kell hoznia egy csodálatos szállítási vállalkozást. Azonban kezdete...
SuperTuxKart Linuxhoz
A SuperTuxKart egy nagyszerű cím, amelynek célja, hogy ingyenesen hozza el a Mario Kart élményét Linux rendszerén. Elég kihívást jelentő és szórakozta...