Î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 .