sed

Sed Ukloni razmak

Sed Ukloni razmak
Uklanjanje razmaka u dokumentima bitan je korak oblikovanja koji je potreban za poboljšanje cjelokupnog izgleda teksta i osiguravanje čistoće i urednosti podataka. Pomaže u pohrani samo potrebnih podataka i rješavanju nepotrebnih vodećih i pratećih prostora. Slijedi nekoliko scenarija u kojima ćete možda trebati ukloniti razmake:

Ako govorimo o vodećim razmacima, relativno ih je lako uočiti kao na početku teksta. Međutim, nije lako uočiti zaostale razmake. Isti je slučaj s dvostrukim razmacima koje je također ponekad teško uočiti. Sve postaje izazovnije kad iz dokumenta koji sadrži tisuće redaka trebate ukloniti sve one vodeće i prateće razmake.

Da biste uklonili razmake iz dokumenta, možete koristiti razne alate kao što su awk, sed, cut i tr. U nekim smo drugim člancima raspravljali o upotrebi awka za uklanjanje razmaka. U ovom ćemo članku raspravljati o upotrebi sed za uklanjanje razmaka iz podataka.

Naučit ćete kako koristiti sed za:

Izvršit ćemo naredbe na Ubuntu 20.04 Žarišna fosa. Iste naredbe možete pokretati i na drugim Linux distribucijama. Za pokretanje naredbi koristit ćemo zadanu aplikaciju Ubuntu Terminal. Da biste otvorili Terminal, upotrijebite tipkovni prečac Ctrl + Alt + T.

Što je Sed

Sed (skraćenica od stream editor) je vrlo moćan i prikladan uslužni program u Linuxu koji nam omogućuje izvođenje osnovnih manipulacija tekstom na ulaznim tokovima. To nije uređivač teksta, ali pomaže u manipuliranju i filtriranju teksta. Prima ulazne tokove i uređuje ih prema uputama korisnika, a zatim transformirani tekst ispisuje na zaslon.

Pomoću sed možete:

Upotreba Seda za uklanjanje razmaka

Za uklanjanje razmaka iz teksta koristit ćemo sljedeću sintaksu:

s / REGEXP / zamjena / zastave

Gdje

Regularni izrazi

Neki od regularnih izraza koje ćemo ovdje upotrijebiti su:

U svrhu demonstracije koristit ćemo sljedeću oglednu datoteku nazvanu "testfile".

Pogledajte sve razmake u datoteci

Da biste pronašli sve razmake u datoteci, usmjerite izlaz naredbe cat na naredbu tr ovako:

$ cat testna datoteka | tr "" "*" | tr "\ t" "&"

Ova naredba zamjenjuje sve razmake u datoteci simbolom (*), što olakšava uočavanje svih razmaka bez obzira jesu li razmaci s jednim, višestrukim, vodećim ili pratećim razmakom.

Na sljedećem snimku zaslona možete vidjeti kako su razmaci zamijenjeni simbolom *.

Uklonite sve razmake (uključujući razmake i kartice)

U nekim slučajevima morate ukloniti sve razmake iz podataka, tj.e. vodeći, prateći i razmaci između tekstova. Sljedeća naredba uklonit će sve razmake iz "ispitne datoteke".

$ cat testna datoteka | sed -r 's / \ s + // g'

Bilješka: Sed ne mijenja vaše datoteke ako ne spremite izlaz u datoteku.

Izlaz:

Nakon pokretanja gornje naredbe pojavio se sljedeći izlaz, koji pokazuje da su svi razmaci uklonjeni iz teksta.

Sljedeću naredbu možete upotrijebiti i da biste provjerili jesu li uklonjeni svi razmaci.

$ cat testna datoteka | sed -r 's / \ s + // g' | tr "" "*" | tr "\ t" "&"

Iz izlaza možete vidjeti da nema simbola (*) što znači da su svi razmaci uklonjeni.

Da biste uklonili sve razmake, ali samo iz određenog retka (recimo redak broj 2), možete upotrijebiti sljedeću naredbu:

$ cat testna datoteka | sed -r '2s / \ s + // g'

Uklonite sve vodeće razmake (uključujući razmake i kartice)

Da biste uklonili sve razmake s početka svakog retka (vodeći razmaci), upotrijebite sljedeću naredbu:

$ cat testna datoteka | sed 's / ^ [\ t] * //'

Izlaz:

Sljedeći izlaz pojavio se nakon pokretanja gornje naredbe, koja pokazuje da su svi vodeći razmaci uklonjeni iz teksta.

Također možete upotrijebiti sljedeću naredbu da biste provjerili jesu li uklonjeni svi vodeći razmaci:

$ cat testna datoteka | sed 's / ^ [\ t] * //' | tr "" "*" | tr "\ t" "&"

Iz izlaza možete vidjeti da na početku redaka nema simbola (*) koji potvrđuje da su uklonjeni svi vodeći razmaci.

Da biste uklonili vodeće razmake samo sa određene linije (recimo redak broj 2), možete upotrijebiti sljedeću naredbu:

$ cat testna datoteka | sed '2s / ^ [\ t] * //'

Uklonite sve prazne razmake (uključujući razmake i kartice)

Da biste uklonili sve razmake s kraja svakog retka (prateći razmaci), upotrijebite sljedeću naredbu:

$ cat testna datoteka | sed 's / [\ t] * $ //'

Izlaz:

Sljedeći izlaz pojavio se nakon pokretanja gornje naredbe, koja pokazuje da su svi propusti koji su zaostali uklonjeni iz teksta.

Sljedeću naredbu možete koristiti i da biste provjerili jesu li uklonjeni svi razmaci koji prate.

$ cat testna datoteka | sed 's / [\ t] * $ //' | tr "" "*" | tr "\ t" "&"

Iz izlaza možete vidjeti da na kraju redaka nema simbola (*) koji potvrđuje da su uklonjeni svi razmaci koji slijede.

Da biste uklonili prazne razmake samo sa određenog retka (recimo retka broj 2), možete upotrijebiti sljedeću naredbu:

$ cat testna datoteka | sed '2s / [\ t] * $ //'

Uklonite vodeći i prateći razmak

Da biste uklonili sve razmake s početka i s kraja svakog retka (tj.e. i vodeći i prateći razmaci), upotrijebite sljedeću naredbu:

$ cat testna datoteka | sed 's / ^ [\ t] * //; s / [\ t] * $ //'

Izlaz:

Sljedeći izlaz pojavio se nakon pokretanja gornje naredbe, koja pokazuje da su iz teksta uklonjeni i vodeći i prateći razmaci.

Sljedeću naredbu možete upotrijebiti i da provjerite jesu li uklonjeni i vodeći i prateći razmaci.

$ cat testna datoteka | sed 's / ^ [\ t] * //; s / [\ t] * $ //' | tr "" "*" | tr "\ t" "&"

Iz izlaza možete vidjeti da na početku ili na kraju redaka nema simbola (*) koji potvrđuje da su uklonjeni svi vodeći i prateći razmaci.

Da biste uklonili i vodeći i prateći razmak samo sa određene linije (recimo redak broj 2), možete upotrijebiti sljedeću naredbu:

$ cat testna datoteka | sed '2s / ^ [\ t] * //; 2s / [\ t] * $ //'

Zamijenite više razmaka s jednim razmakom

U nekim slučajevima u datoteci postoji više razmaka na istom mjestu, ali trebate samo jedan razmak. To možete učiniti zamjenom tih višestrukih prostora jednim prostorom pomoću sed.

Sljedeća naredba zamijenit će sve više razmaka s jednim razmakom iz svakog retka u "testfileu".

$ cat testna datoteka | sed 's / [] \ + / / g'

Izlaz:

Sljedeći izlaz pojavio se nakon pokretanja gornje naredbe, koja pokazuje da je više razmaka zamijenjeno s jednim razmakom.

Sljedeću naredbu možete koristiti i da biste provjerili je li više bijelih prostora zamijenjeno jednim bijelim prostorom:

$ cat testna datoteka | sed 's / [] \ + / / g' | tr "" "*" | tr "\ t" "&"

Iz izlaza možete vidjeti pojedinačni simbol (*) na svakom mjestu koji potvrđuje da su sve pojave više bijelih prostora zamijenjene jednim bijelim prostorom.

Dakle, ovdje se radilo o uklanjanju razmaka iz podataka pomoću sed. U ovom ste članku naučili kako koristiti sed za uklanjanje svih razmaka iz podataka, uklanjanje samo vodećeg ili pratećeg razmaka i uklanjanje razmaka između vodećih i zaostalih prostora. Također ste naučili kako zamijeniti više razmaka jednim razmakom. Sada će vam biti lako ukloniti razmake iz datoteke koja sadrži stotine ili tisuće redaka.

Najbolji emulatori igraće konzole za Linux
Ovaj će članak navesti popularni softver za emulaciju igraće konzole dostupan za Linux. Emulacija je sloj kompatibilnosti softvera koji oponaša hardve...
Najbolji Linux Distros za igre na sreću 2021. godine
Linux operativni sustav daleko je prevalio svoj izvorni, jednostavni izgled zasnovan na poslužitelju. Ovaj se OS posljednjih godina izuzetno poboljšao...
Kako snimiti i struji svoju igraću sesiju na Linuxu
U prošlosti se igranje igara smatralo samo hobijem, ali s vremenom je igračka industrija zabilježila ogroman rast u pogledu tehnologije i broja igrača...