sed

Sed Odstrani presledek

Sed Odstrani presledek
Odstranjevanje presledkov v dokumentih je bistven korak oblikovanja, ki je potreben za izboljšanje celotne postavitve besedila in za zagotovitev, da so podatki čisti in urejeni. Pomaga shraniti samo zahtevane podatke in se znebiti nepotrebnih vodilnih in končnih presledkov. Sledi nekaj primerov, ko boste morda morali odstraniti presledke:

Če govorimo o vodilnih presledkih, jih je razmeroma enostavno opaziti, kot so na začetku besedila. Vendar pa ni lahko opaziti zaostalih belih prostorov. Enako je z dvojnimi presledki, ki jih je včasih tudi težko opaziti. Vse postane bolj zahtevno, ko morate iz dokumenta, ki vsebuje tisoče vrstic, odstraniti vse presledke, ki vodijo in sledijo.

Če želite iz dokumenta odstraniti presledke, lahko uporabite različna orodja, kot so awk, sed, cut in tr. V nekaterih drugih člankih smo razpravljali o uporabi awk pri odstranjevanju presledkov. V tem članku bomo razpravljali o uporabi sed za odstranjevanje presledkov iz podatkov.

Naučili se boste, kako uporabljati sed za:

Ukaze bomo izvajali v Ubuntu 20.04 Focal Fossa. Iste ukaze lahko izvajate tudi v drugih distribucijah Linuxa. Za izvajanje ukazov bomo uporabili privzeto aplikacijo Ubuntu Terminal. Če želite odpreti terminal, uporabite bližnjično tipko Ctrl + Alt + T.

Kaj je Sed

Sed (kratica za urejevalnik tokov) je zelo zmogljiv in priročen pripomoček v Linuxu, ki nam omogoča izvajanje osnovnih besedilnih manipulacij na vhodnih tokovih. To ni urejevalnik besedil, vendar pomaga pri manipulaciji in filtriranju besedila. Sprejema vhodne tokove in jih ureja v skladu z navodili uporabnika, nato pa preoblikovano besedilo natisne na zaslon.

S sed lahko:

Uporaba Seda za odstranjevanje presledkov

Za odstranjevanje presledkov iz besedila bomo uporabili naslednjo sintakso:

s / REGEXP / nadomestitev / zastave

Kje

Regularni izrazi

Nekateri regularni izrazi, ki jih bomo uporabili tukaj, so:

Za predstavitev bomo uporabili naslednjo vzorčno datoteko z imenom "testfile".

Oglejte si vse presledke v datoteki

Če želite najti vse presledke v datoteki, izhod ukaza cat usmerite v ukaz tr, kot je ta:

$ cat testfile | tr "" "*" | tr "\ t" "&"

Ta ukaz nadomešča vse presledke v datoteki s simbolom (*), kar olajša opazovanje vseh presledkov, ne glede na to, ali so enojni, večkratni, vodilni ali zaostali beli prostori.

Na naslednjem posnetku zaslona lahko vidite, da so presledki nadomeščeni s simbolom *.

Odstrani vse presledke (vključno s presledki in zavihki)

V nekaterih primerih morate iz podatkov odstraniti ves presledek, tj.e. vodilni, končni in presledki med besedili. Naslednji ukaz bo iz preskusne datoteke odstranil vse presledke.

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

Opomba: Sed ne spremeni datotek, razen če izhodne datoteke shranite v datoteko.

Izhod:

Po zagonu zgornjega ukaza se je pojavil naslednji izhod, ki kaže, da so bili vsi presledki odstranjeni iz besedila.

Z naslednjim ukazom lahko preverite, ali so bili odstranjeni vsi presledki.

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

Iz izhoda lahko vidite, da ni simbola (*), kar pomeni, da so bili odstranjeni vsi presledki.

Če želite odstraniti vse presledke, vendar le iz določene vrstice (recimo številke 2), lahko uporabite naslednji ukaz:

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

Odstrani vse vodilne presledke (vključno s presledki in zavihki)

Če želite odstraniti vse presledke z začetka vsake vrstice (vodilni presledki), uporabite naslednji ukaz:

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

Izhod:

Naslednji izhod se je pojavil po zagonu zgornjega ukaza, ki kaže, da so bili vsi glavni presledki odstranjeni iz besedila.

Z naslednjim ukazom lahko tudi preverite, ali so bili odstranjeni vsi vodilni presledki:

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

Iz izhoda lahko vidite, da na začetku vrstic ni simbola (*), ki bi potrdil, da so odstranjeni vsi vodilni presledki.

Če želite odstraniti vodilne presledke samo iz določene vrstice (recimo številke 2), lahko uporabite naslednji ukaz:

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

Odstrani vse zaključne presledke (vključno s presledki in zavihki)

Če želite odstraniti vse presledke s konca vsake vrstice (končni presledki), uporabite naslednji ukaz:

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

Izhod:

Naslednji izhod se je pojavil po zagonu zgornjega ukaza, ki kaže, da so bili vsi končni presledki odstranjeni iz besedila.

Z naslednjim ukazom lahko tudi preverite, ali so bili odstranjeni vsi zaostali presledki.

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

Iz izhoda lahko vidite, da na koncu vrstic ni simbola (*), ki bi potrdil, da so odstranjeni vsi zaostali presledki.

Če želite odstraniti zaostale presledke samo iz določene vrstice (recimo vrstice številka 2), lahko uporabite naslednji ukaz:

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

Odstranite vodilni in zaključni presledek

Če želite odstraniti vse presledke z začetka in konca vsake vrstice (tj.e. tako vodilni kot zaostali presledki), uporabite naslednji ukaz:

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

Izhod:

Naslednji izhod se je pojavil po zagonu zgornjega ukaza, ki kaže, da sta bila besedila odstranjena tako vodilni kot tudi zadnji presledki.

Z naslednjim ukazom lahko tudi preverite, ali sta bila odstranjena vodilni in zadnji presledki.

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

Iz izhoda lahko vidite, da na začetku ali koncu vrstic ni simbola (*), ki bi potrdil, da so odstranjeni vsi vodilni in zadnji presledki.

Če želite odstraniti vodilni in zadnji presledek samo iz določene vrstice (recimo vrstice številka 2), lahko uporabite naslednji ukaz:

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

Zamenjajte več presledkov z enim presledkom

V nekaterih primerih je v datoteki več presledkov na istem mestu, vendar potrebujete le en presledek. To lahko storite tako, da te več presledkov nadomestite z enim presledkom s pomočjo sed.

Naslednji ukaz bo nadomestil vse več presledkov z enim presledkom iz vsake vrstice v "testni datoteki".

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

Izhod:

Naslednji izhod se je pojavil po zagonu zgornjega ukaza, ki kaže, da je bilo več presledkov zamenjanih z enim presledkom.

Z naslednjim ukazom lahko preverite, ali je več presledkov zamenjanih z enim presledkom:

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

Iz izhoda lahko vidite posamezen simbol (*) na vsakem mestu, ki potrjuje, da so vsi pojavki več belih prostorov zamenjani z enim presledkom.

Torej, vse je šlo za odstranjevanje presledkov iz podatkov s pomočjo sed. V tem članku ste se naučili, kako s pomočjo sed odstraniti ves presledek iz podatkov, odstraniti samo začetni presledek ali zaostali presledek ter odstraniti vodilni in zadnji presledek. Naučili ste se tudi, kako več presledkov zamenjate z enim presledkom. Zdaj boste lahko preprosto odstranjevali presledke iz datoteke, ki vsebuje stotine ali tisoče vrstic.

Vadnica za OpenTTD
OpenTTD je ena izmed najbolj priljubljenih poslovnih simulacijskih iger. V tej igri morate ustvariti čudovit prevozniški posel. Vendar boste začeli na...
SuperTuxKart za Linux
SuperTuxKart je odličen naslov, zasnovan tako, da vam brezplačno ponuja izkušnjo Mario Kart v vašem sistemu Linux. Igrati je precej zahtevno in zabavn...
Vadnica za bitko za Wesnoth
Bitka za Wesnoth je ena izmed najbolj priljubljenih odprtokodnih strateških iger, ki jih lahko trenutno igrate. Ne samo, da se ta igra razvija že zelo...