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 forráskód formázása
- Az adatok tisztításához
- A parancssori kimenetek egyszerűsítése érdekében
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:
- Vágja le a fájl összes szóközt
- Vágja el a fehér szóközöket
- Vágja le a szóközöket
- Vágja le mind a vezető, mind a mögöttük lévő szóközöket
- Cserélje ki a több szóközt egyetlen szóközzel
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
- gsub (globális helyettesítést jelent) helyettesítési függvény
- / / fehér teret képviselnek
- „” nem ábrázol semmit (vágja le a húrot)
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
- alatti egy helyettesítő függvény
- ^ a karakterlánc elejét jelenti
- [\ t]+ egy vagy több szóközt jelent
- „” nem ábrázol semmit (vágja le a húrot)
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
- alatti egy helyettesítő függvény
- [\ t]+ egy vagy több szóközt jelent
- $ a karakterlánc végét jelenti
- „” nem ábrázol semmit (vágja le a húrot)
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
- gsub globális helyettesítési függvény
- ^ [\ t]+ a vezető fehér területeket képviseli
- [\ t] + $ a záró szóközöket jelöli
- „” nem ábrázol semmit (vágja le a húrot)
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:
- gsub globális helyettesítési függvény
- []+ egy vagy több szóközt jelent
- „” egy fehér teret jelöl
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.