Sed înlocuiți Newline cu spațiu

Sed Inlocuiti Newline Cu Spatiu



În UNIX/Linux, comanda sed este un instrument dedicat pentru editarea fluxurilor. Poate efectua diverse operații pe un flux de text, cum ar fi căutarea, găsirea și înlocuirea și inserarea/ștergerea. În cea mai mare parte, însă, sed este folosit pentru a găsi și înlocui conținutul textului.

În acest ghid, vom prezenta înlocuirea liniilor noi cu spațiu folosind sed.

Utilizarea sed pentru înlocuirea textului

În primul rând, să ne uităm rapid la efectuarea de căutare și înlocuire de bază folosind sed. Aceeași metodă va fi folosită la înlocuirea liniilor noi cu spații cu unele opțiuni suplimentare. Structura comenzii este următoarea:







$ sed -e 's///'

Aruncă o privire la următoarea comandă:



$ echo „vulpea maro iute” | sed -e 's/quick/fast/g'



Comanda echo tipărește șirul către STDOUT . Fluxul STDOUT este atunci canalizat a sed. Am instruit sed să înlocuiască orice instanță de rapid pentru a fi înlocuit cu rapid. În cele din urmă, rezultatul este imprimat pe ecran.





Înlocuirea liniilor noi cu spațiu

Pentru demonstrație, am creat următorul fișier text test.txt cu mai multe conținuturi fictive:

$ cat test.txt



Comanda sed acceptă expresii regulate pentru a descrie diferite modele. Utilizând această funcție, vom descrie noua linie ca \n. Să încercăm să înlocuim liniile noi cu spații albe:

$ sed -e 's/\n/ /g' test.txt

Cu toate acestea, asta nu a funcționat așa cum era de așteptat. Pentru a atinge acest obiectiv, avem nevoie de câteva opțiuni suplimentare. Aruncă o privire la următoarea comandă:

$ sed -e ':a;N;$!ba;s/\n/ /g' test.txt

Comanda sed are mai multe secțiuni; fiecare denotă o sarcină specifică:

  • :a: Creează o etichetă „a”
  • N: Adaugă următoarea linie la spațiul modelului
  • $!ba: Dacă nu este ultima linie, revine la eticheta „a”
  • s/\n/ /g: Găsește și înlocuiește linia nouă (\n) cu spațiu (/ /). Modelul se potrivește la nivel global (/g)

Comanda sed trece prin pași până când ajunge la ultima linie, înlocuind toate \n caracterele cu spațiu.

În loc de această comandă complexă, putem simplifica lucrurile utilizând steag-ul -z care specifică sed să lucreze cu înregistrări separate prin valori nule. Comanda ar arăta astfel:

$ sed -z -e 's/\n/ /g' test.txt

Metode alternative

În timp ce sed poate face sarcina foarte bine, există câteva instrumente alternative. În această secțiune, vom examina pe scurt câteva dintre ele.

Pentru următorul exemplu, putem folosi comanda tr pentru a înlocui linia nouă cu spații albe într-un mod simplu:

$ tr '\n' ' ' < test.txt

De asemenea, putem folosi perl pentru a face treaba. Următoarea sintaxă este, de asemenea, similară cu ceea ce am folosit cu sed (dar simplificată):

$ perl -p -e 's/\n/ /' test.txt

O altă modalitate de a înlocui liniile noi cu spații albe este utilizarea comenzii paste. Rețineți că poate elimina doar un caracter:

$ paste -s -d ' ' test.txt

Similar cu sed, Linux vine cu un alt instrument awk. Similar cu sed, poate efectua și unele înlocuiri avansate pe intrare. În scopul nostru, utilizați următoarea comandă awk:

$ awk 1 ORS=' ' test.txt

Concluzie

Acest ghid a explorat modul în care putem înlocui newline cu spațiu folosind sed. S-a realizat în două moduri diferite. Acest ghid include și alte instrumente relevante pe care le putem folosi pentru a înlocui linia nouă cu spații albe.

În loc să folosim comenzi complexe care sunt greu de memorat, folosim scripting-ul Bash pentru a efectua multe lucruri în Linux. Deși vine cu prețul unor performanțe, flexibilitatea și utilitatea merită. Află mai multe despre Bash scripting pentru începători .