- A forráskód formázásához
- Az adatok tisztításához
- A parancssori kimenet egyszerűsítéséhez
Ha vezető térközökről beszélünk, azokat viszonylag könnyű észrevenni, mint a szöveg elején. Azonban nem könnyű észrevenni a lemaradó fehér mezőket. Ugyanez a helyzet a kettős szóközökkel is, amelyeket szintén néha nehéz észrevenni. Mindez egyre nagyobb kihívást jelent, ha el kell távolítania az összes vezető és végződő szóközt egy több ezer sort tartalmazó dokumentumból.
A szóközök eltávolításához különféle eszközöket használhat, például awk, sed, cut és tr. Néhány más cikkben megvitattuk az awk használatát a szóközök eltávolításakor. Ebben a cikkben megvitatjuk a sed használatát a szóközök eltávolításához az adatokból.
Megtanulja, hogyan kell használni a sedet:
- Távolítsa el az összes szóközt
- Távolítsa el a vezető szóközöket
- Távolítsa el a záró szóközöket
- Távolítsa el a vezető és a hátsó szóközöket egyaránt
- Cserélje ki a több szóközt egyetlen szóközzel
Futtatjuk a parancsokat az Ubuntu 20-on.04 Focal Fossa. Ugyanezeket a parancsokat futtathatja más Linux disztribúciókon is. A parancsok futtatásához az alapértelmezett Ubuntu Terminal alkalmazást fogjuk használni. A terminál megnyitásához használja a Ctrl + Alt + T billentyűparancsot.
Mi az a Sed
A Sed (a stream szerkesztő rövidítése) egy nagyon hatékony és praktikus segédprogram a Linuxban, amely lehetővé teszi számunkra, hogy alapvető szövegmanipulációkat hajtsunk végre a bemeneti folyamokon. Ez nem szövegszerkesztő, de segít a szöveg manipulálásában és szűrésében. Fogadja a bemeneti folyamokat és a felhasználói utasításoknak megfelelően szerkeszti, majd kinyomtatja az átalakított szöveget a képernyőre.
A sed segítségével:
- Válasszon szöveget
- Szöveg keresése
- Szöveg beillesztése
- Szöveg cseréje
- Szöveg törlése
A Sed használata a szóközök eltávolításához
A következő szintaxist fogjuk használni a szóközök eltávolításához a szövegből:
s / REGEXP / csere / zászlókHol
- s /: van szubsztitúciós kifejezés
- REGEXP: az illeszkedő reguláris kifejezés
- csere: a helyettesítő karakterlánc
- zászlók: Csak a „g” jelzőt használjuk a helyettesítés engedélyezéséhez minden sorban
Reguláris kifejezések
Néhány itt használt reguláris kifejezés:
- ^ mérkőzések a sor elején
- $ mérkőzések a sor vége
- + egyezik az előző karakter egy vagy több előfordulásával
- * megegyezik az előző karakter nulla vagy több előfordulásával.
Bemutató célokra a következő „testfile” nevű mintafájlt fogjuk használni.
Az összes fehér mező megtekintése egy fájlban
A fájlban található összes szóköz megtalálásához a cat parancs kimenetét a tr parancshoz így csatolja:
$ macska tesztfájl | tr "" "*" | tr "\ t" "&"Ez a parancs a fájlban lévő összes szóközt helyettesíti (*) szimbólummal, ami megkönnyíti az összes szóköz felismerését, legyenek azok egyszeresek, többszörösek, vezető vagy záró szóközök.
A következő képernyőképen láthatja, hogy a szóközöket * szimbólum váltja fel.
Távolítsa el az összes szóközt (beleértve a szóközöket és a füleket is)
Bizonyos esetekben el kell távolítania az összes szóközt az adatokból, azaz.e. vezetés, lemaradás és a szövegek közötti szóköz. A következő parancs eltávolítja az összes szóközt a „tesztfájlból”.
$ macska tesztfájl | sed -r 's / \ s + // g'Jegyzet: A Sed csak akkor változtatja meg a fájljait, ha elmenti a kimenetet a fájlba.
Kimenet:
A fenti parancs futtatása után a következő kimenet jelent meg, amely azt mutatja, hogy az összes szóközt eltávolították a szövegből.
A következő paranccsal ellenőrizheti, hogy az összes szóközt eltávolították-e.
$ macska tesztfájl | sed -r 's / \ s + // g' | tr "" "*" | tr "\ t" "&"A kimenetről láthatja, hogy ez nem (*) szimbólum, ami azt jelenti, hogy az összes szóközt eltávolították.
Az összes szóköz eltávolításához, de csak egy adott sorból (tegyük fel, hogy a 2. sor), a következő parancsot használhatja:
$ macska tesztfájl | sed -r '2s / \ s + // g'Távolítsa el az összes vezető szóközt (beleértve a szóközöket és a füleket is)
Az összes sor elejéről az összes szóköz eltávolításához (a vezető szóközökhöz) használja a következő parancsot:
$ macska tesztfájl | sed 's / ^ [\ t] * //'Kimenet:
A fenti kimenet a fenti parancs futtatása után jelent meg, amely azt mutatja, hogy az összes vezető szóköz el lett távolítva a szövegből.
A következő paranccsal ellenőrizheti, hogy az összes vezető szóköz el lett-e távolítva:
$ macska tesztfájl | sed 's / ^ [\ t] * //' | tr "" "*" | tr "\ t" "&"A kimenetről láthatja, hogy a sorok elején nincs (*) szimbólum, amely igazolja, hogy az összes vezető szóköz el lett távolítva.
A vezető szóközök eltávolításához csak egy adott sorból (tegyük fel, hogy a 2. sorszám) használhatja a következő parancsot:
$ macska tesztfájl | sed '2s / ^ [\ t] * //'Távolítsa el az összes zárójelet (beleértve a szóközöket és a füleket is)
Az egyes sorok végéből az összes szóköz eltávolításához (záró szóközök) használja a következő parancsot:
$ macska tesztfájl | sed 's / [\ t] * $ //'Kimenet:
A fenti kimenet a fenti parancs futtatása után jelent meg, amely azt mutatja, hogy az összes záró szóközt eltávolították a szövegből.
A következő paranccsal ellenőrizheti, hogy az összes záró szóközt eltávolították-e.
$ macska tesztfájl | sed 's / [\ t] * $ //' | tr "" "*" | tr "\ t" "&"A kimenetből láthatja, hogy a sorok végén nincs (*) szimbólum, amely igazolja, hogy az összes záró szóköz eltűnt.
A záró szóközök eltávolításához csak egy adott sorból (tegyük fel, hogy a 2. sor), használhatja a következő parancsot:
$ macska tesztfájl | sed '2s / [\ t] * $ //'Távolítsa el a vezető és a záró szóközöket egyaránt
Az összes szóköz eltávolításához az egyes sorok elejétől és végétől (i.e. vezető és záró szóközök egyaránt), használja a következő parancsot:
$ macska tesztfájl | sed 's / ^ [\ t] * //; s / [\ t] * $ //'Kimenet:
A fenti kimenet a fenti parancs futtatása után jelent meg, amely azt mutatja, hogy mind a vezető, mind a záró szóköz el lett távolítva a szövegből.
A következő paranccsal ellenőrizheti, hogy a vezető és a záró szóközök egyaránt eltávolításra kerültek-e.
$ macska tesztfájl | sed 's / ^ [\ t] * //; s / [\ t] * $ //' | tr "" "*" | tr "\ t" "&"A kimenetről láthatja, hogy a sorok elején vagy végén nincs (*) szimbólum, amely igazolja, hogy az összes vezető és záró szóköz el lett távolítva.
Az elõzõ és a záró szóközöket csak egy adott sorból (mondjuk a 2. sorból) távolítsuk el, a következõ paranccsal:
$ macska tesztfájl | sed '2s / ^ [\ t] * //; 2s / [\ t] * $ //'Cserélje le a Több szóköz szót egy üres szóközre
Bizonyos esetekben a fájl ugyanazon a helyén több szóköz van, de csak egyetlen szóközre van szükség. Ezt úgy teheti meg, hogy ezeket a több szóközt egyetlen szóközzel helyettesíti a sed használatával.
A következő parancs az összes több szóközt egyetlen szóközzel helyettesíti a „tesztfájl” minden sorából.
$ macska tesztfájl | sed 's / [] \ + / / g'Kimenet:
A fenti kimenet a fenti parancs futtatása után jelent meg, amely azt mutatja, hogy a több szóköz helyére az egyetlen szóköz lépett.
A következő paranccsal ellenőrizheti, hogy több szóköz van-e helyettesítve egyetlen szóközzel:
$ macska tesztfájl | sed 's / [] \ + / / g' | tr "" "*" | tr "\ t" "&"A kimenetről minden helyen láthatja az egyetlen (*) szimbólumot, amely igazolja, hogy a több szóköz összes előfordulása egyetlen szóközzel helyettesítve van.
Szóval, ez arról szólt, hogy a sed használatával eltávolítottuk a szóközöket az adatokból. Ebben a cikkben megtanulta, hogyan használhatja a sedet az összes szóköz eltávolításához az adatokból, csak az első vagy a záró szóköz eltávolításához, valamint az első és a záró szóköz eltávolításához. Megtanulta azt is, hogyan lehet több szóközt egyetlen szóközzel helyettesíteni. Most már könnyen eltávolíthatja a szóközöket egy fájlból, amely több száz vagy ezer sort tartalmaz.