- Pentru reformatarea codului sursă
- Pentru curățarea datelor
- Pentru simplificarea ieșirii din linia de comandă
Dacă vorbim despre spațiile albe principale, acestea sunt relativ ușor de observat, așa cum sunt la începutul textului. Cu toate acestea, nu este ușor să observați spațiile albe care se află în urmă. Același lucru este cazul cu spațiile duble, care sunt, de asemenea, uneori dificil de observat. Totul devine mai provocator atunci când trebuie să eliminați toate acele spații albe care conduc și care se află în urmă dintr-un document care conține mii de rânduri.
Pentru a elimina spațiile albe din document, puteți utiliza diverse instrumente, cum ar fi awk, sed, cut și tr. În alte câteva articole, am discutat despre utilizarea awk în eliminarea spațiilor albe. În acest articol, vom discuta despre utilizarea sed pentru eliminarea spațiilor albe din date.
Veți învăța cum să utilizați sed pentru:
- Eliminați toate spațiile albe
- Eliminați spațiile albe principale
- Eliminați spațiile albe
- Eliminați atât spațiile albe, cât și cele finale
- Înlocuiți spațiile multiple cu spațiul unic
Vom rula comenzile pe Ubuntu 20.04 Focal Focal. De asemenea, puteți rula aceleași comenzi pe alte distribuții Linux. Vom folosi aplicația implicită Terminal Ubuntu pentru rularea comenzilor. Pentru a deschide terminalul, utilizați comanda rapidă de la tastatură Ctrl + Alt + T.
Ce este Sed
Sed (înseamnă editor de flux) este un utilitar foarte puternic și la îndemână în Linux care ne permite să efectuăm manipulări de bază ale textului pe fluxurile de intrare. Nu este un editor de text, dar ajută la manipularea și filtrarea textului. Acesta primește fluxurile de intrare și îl editează conform instrucțiunilor utilizatorului și apoi imprimă textul transformat pe ecran.
Cu sed, puteți:
- Selectați textul
- Căutați text
- Introduceți text
- Înlocuiți textul
- Ștergeți textul
Utilizarea Sed pentru a elimina spațiile albe
Vom folosi următoarea sintaxă pentru eliminarea spațiilor albe din text:
s / REGEXP / înlocuire / semnalizatoareUnde
- s /: este expresie de substituție
- REGEXP: este o expresie regulată pe măsură
- înlocuire: este șirul de înlocuire
- steaguri: Vom folosi doar marcajul „g” pentru a permite substituirea la nivel global pe fiecare linie
Expresii obisnuite
Câteva dintre expresiile regulate pe care le vom folosi aici sunt:
- ^ meciurile încep linia
- $ chibrituri sfârșitul liniei
- + se potrivește cu una sau mai multe apariții ale caracterului precedent
- * se potrivește cu zero sau mai multe apariții ale caracterului precedent.
În scop demonstrativ, vom folosi următorul exemplu de fișier numit „testfile”.
Vizualizați toate spațiile albe dintr-un fișier
Pentru a găsi toate spațiile albe din fișierul dvs., conduceți ieșirea comenzii cat la comanda tr astfel:
$ cat testfile | tr "" "*" | tr "\ t" "&"Această comandă înlocuiește toate spațiile albe din fișierul dvs. cu simbolul (*), ceea ce face mai ușor să identificați toate spațiile albe indiferent dacă acestea sunt spații albe unice, multiple, principale sau finale.
În următoarea captură de ecran, puteți vedea spațiile albe sunt înlocuite cu simbolul *.
Eliminați toate spațiile albe (inclusiv spațiile și filele)
În unele cazuri, trebuie să eliminați toate spațiile albe din date, i.e. conducerea, urmărirea și spațiile albe dintre texte. Următoarea comandă va elimina toate spațiile albe din „fișierul de testare”.
$ cat testfile | sed -r 's / \ s + // g'Notă: Sed nu vă modifică fișierele decât dacă salvați ieșirea în fișier.
Ieșire:
După executarea comenzii de mai sus, a apărut următoarea ieșire, care arată că toate spațiile albe au fost eliminate din text.
De asemenea, puteți utiliza următoarea comandă pentru a verifica dacă toate spațiile albe au fost eliminate.
$ cat testfile | sed -r 's / \ s + // g' | tr "" "*" | tr "\ t" "&"Din ieșire, puteți vedea că nu există nici un simbol (*) ceea ce înseamnă că toate spațiile albe au fost eliminate.
Pentru a elimina toate spațiile albe, dar numai dintr-o anumită linie (să presupunem linia numărul 2), puteți utiliza următoarea comandă:
$ cat testfile | sed -r '2s / \ s + // g'Eliminați toate spațiile albe principale (inclusiv spațiile și filele)
Pentru a elimina toate spațiile albe de la începutul fiecărei linii (spațiile albe care conduc), utilizați următoarea comandă:
$ cat testfile | sed 's / ^ [\ t] * //'Ieșire:
Următoarea ieșire a apărut după executarea comenzii de mai sus, care arată că toate spațiile albe principale au fost eliminate din text.
De asemenea, puteți utiliza următoarea comandă pentru a verifica dacă toate spațiile albe principale au fost eliminate:
$ cat testfile | sed 's / ^ [\ t] * //' | tr "" "*" | tr "\ t" "&"Din ieșire, puteți vedea că nu există nici un simbol (*) la începutul liniilor care verifică dacă toate spațiile albe principale sunt eliminate.
Pentru a elimina spațiile albe de la o anumită linie (să presupunem numărul 2), puteți utiliza următoarea comandă:
$ cat testfile | sed '2s / ^ [\ t] * //'Eliminați toate spațiile albe finale (inclusiv spațiile și filele)
Pentru a elimina toate spațiile albe de la sfârșitul fiecărei linii (spații albe finale), utilizați următoarea comandă:
$ cat testfile | sed 's / [\ t] * $ //'Ieșire:
Următoarea ieșire a apărut după executarea comenzii de mai sus, care arată că toate spațiile albe au fost eliminate din text.
De asemenea, puteți utiliza următoarea comandă pentru a verifica dacă toate spațiile albe au fost eliminate.
$ cat testfile | sed 's / [\ t] * $ //' | tr "" "*" | tr "\ t" "&"Din ieșire, puteți vedea că nu există nici un simbol (*) la sfârșitul liniilor care verifică dacă toate spațiile albe sunt eliminate.
Pentru a elimina spațiile albe de pe o linie specifică (să presupunem numărul 2), puteți utiliza următoarea comandă:
$ cat testfile | sed '2s / [\ t] * $ //'Eliminați atât spațiile albe principale, cât și cele finale
Pentru a elimina toate spațiile albe atât de la începutul, cât și de la sfârșitul fiecărei linii (i.e. atât spațiile albe principale, cât și cele finale), utilizați următoarea comandă:
$ cat testfile | sed 's / ^ [\ t] * //; s / [\ t] * $ //'Ieșire:
Următoarea ieșire a apărut după ce ați executat comanda de mai sus, care arată că atât spațiul alb principal, cât și cel final au fost eliminate din text.
De asemenea, puteți utiliza următoarea comandă pentru a verifica dacă atât spațiul alb principal, cât și cel final au fost eliminate.
$ cat testfile | sed 's / ^ [\ t] * //; s / [\ t] * $ //' | tr "" "*" | tr "\ t" "&"Din ieșire, puteți vedea că nu există nici un simbol (*) la începutul sau la sfârșitul liniilor care verifică faptul că toate spațiile albe de început și de sfârșit sunt eliminate.
Pentru a elimina atât spațiile albe de început, cât și cele finale dintr-o anumită linie (să presupunem linia numărul 2), puteți utiliza următoarea comandă:
$ cat testfile | sed '2s / ^ [\ t] * //; 2s / [\ t] * $ //'Înlocuiți mai multe spații albe cu spații albe unice
În unele cazuri, există mai multe spații albe în același loc în fișier, dar aveți nevoie doar de spații albe. Puteți face acest lucru înlocuind acele spații multiple cu un singur spațiu folosind sed.
Următoarea comandă va înlocui toate spațiile albe multiple cu spațiul alb unic din fiecare linie din „fișierul de testare”.
$ cat testfile | sed 's / [] \ + / / g'Ieșire:
Următoarea ieșire a apărut după executarea comenzii de mai sus, care arată că spațiile albe multiple au fost înlocuite cu spațiul alb unic.
De asemenea, puteți utiliza următoarea comandă pentru a verifica dacă mai multe spații albe sunt înlocuite cu spații albe unice:
$ cat testfile | sed 's / [] \ + / / g' | tr "" "*" | tr "\ t" "&"Din ieșire, puteți vedea simbolul unic (*) în fiecare loc, care verifică faptul că toate aparițiile mai multor spații albe sunt înlocuite cu un singur spațiu alb.
Deci, totul a fost despre eliminarea spațiilor albe din datele dvs. folosind sed. În acest articol, ați învățat cum să utilizați sed pentru a elimina toate spațiile albe din datele dvs., a elimina numai spațiul alb principal sau final și a elimina atât spațiul alb principal, cât și cel final. De asemenea, ați învățat cum să înlocuiți mai multe spații cu un singur spațiu. Acum va fi ușor să eliminați spațiile albe dintr-un fișier care conține sute sau mii de linii.