Sed Fjern hvitrommet

Sed Fjern hvitrommet
Å fjerne hvitespasninger i dokumenter er et viktig formateringstrinn som kreves for å forbedre den generelle utformingen av en tekst og for å sikre at data er ren og ryddig. Det hjelper å lagre bare de nødvendige dataene og bli kvitt unødvendige ledende og etterfølgende rom. Følgende er noen scenarier der du kanskje trenger å fjerne hvitespasninger:
  • For å formatere kildekoden
  • For å rydde opp data
  • For å forenkle kommandolinjeutgangen

Hvis vi snakker om å lede hvitespaser, er de relativt enkle å oppdage som de er i starten av teksten. Imidlertid er det ikke lett å oppdage de etterfølgende hvitespasene. Det samme er tilfelle med doble mellomrom som også noen ganger er vanskelige å oppdage. Det hele blir mer utfordrende når du trenger å fjerne alle de ledende og etterfølgende hvitespasene fra et dokument som inneholder tusenvis av linjer.

For å fjerne hvitespedder fra dokumentet, kan du bruke forskjellige verktøy som AWK, SED, CUT og TR. I noen andre artikler har vi diskutert bruken av AWK for å fjerne hvitespasene. I denne artikkelen vil vi diskutere bruken av SED for å fjerne hvitderier fra dataene.

Du lærer hvordan du bruker SED til:

  • Fjern alle hvite rom
  • Fjern ledende hvitt
  • Fjern etterfølgende hvitder
  • Fjern både ledende og etterfølgende hvitespasninger
  • Bytt ut flere mellomrom med enkelt plass

Vi kjører kommandoene på Ubuntu 20.04 Focal Fossa. Du kan også kjøre de samme kommandoene på andre Linux -distribusjoner. Vi bruker standard Ubuntu Terminal -applikasjonen for å kjøre kommandoene. For å åpne terminalen, bruk CTRL+ALT+T -tastaturets snarvei.

Hva er sed

SED (Stands for Stream Editor) er et veldig kraftig og praktisk verktøy i Linux som lar oss utføre grunnleggende tekstmanipulasjoner på inngangsstrømmene. Det er ikke en tekstredigerer, men det hjelper å manipulere og filtrere tekst. Den mottar inngangsstrømmene og redigerer den i henhold til brukerens instruksjoner og skriver deretter ut den transformerte teksten til skjermen.

Med SED kan du:

  • Velg tekst
  • Søketekst
  • Sett inn tekst
  • Erstatte tekst
  • Slett tekst

Bruker SED for å fjerne hvitespasninger

Vi vil bruke følgende syntaks for å fjerne hvitespasninger fra teksten:

s /regexp /erstatning /flagg

Hvor

  • s/: er substitusjonsuttrykk
  • Regexp: er et vanlig uttrykk for å matche
  • erstatning: er erstatningsstrengen
  • flagg: Vi vil bare bruke “G” -flagget for å muliggjøre substitusjon globalt på hver linje

Vanlig uttrykk

Noen av de vanlige uttrykkene vi vil bruke her er:

  • ^ Kamper start av linjen
  • $ fyrstikker slutten av linjen
  • + samsvarer med en eller flere forekomster av den foregående karakteren
  • * samsvarer med null eller flere forekomster av den foregående karakteren.

For demonstrasjonsformål vil vi bruke følgende prøvefil som heter "Testfile".

Se alle hvitfarer i en fil

For å finne alle hvitespasene i filen din, rør utgangen fra CAT -kommandoen til TR -kommandoen slik:

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

Denne kommandoen erstatter alle hvitespasene i filen din med (*) symbol, noe som gjør det lettere å oppdage alle hvitespasene, enten de er enkelt-, flere, ledende eller etterfølgende hvitespasninger.

I det følgende skjermbildet kan du se at hvitespasene erstattes av * symbolet.

Fjern alle hvitespasninger (inkludert mellomrom og faner)

I noen tilfeller må du fjerne alle hvitfarer fra dataene, jeg.e. ledende, etterfølgende og hvitespasene mellom tekstene. Følgende kommando vil fjerne alle hvitespasene fra "testfilen".

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

Merk: SED endrer ikke filene dine med mindre du lagrer utdataene i filen.

Produksjon:

Etter å ha kjørt kommandoen ovenfor, dukket det opp følgende utdata, som viser at alle hvitespasene er fjernet fra teksten.

Du kan også bruke følgende kommando for å bekrefte at alle hvitfarer er fjernet.

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

Fra utgangen kan du se at det ikke er noe (*) symbol som betyr at alle hvitespasene er fjernet.

For å fjerne alle hvitespasninger, men bare fra en bestemt linje (la oss si linje nummer 2), kan du bruke følgende kommando:

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

Fjern alle ledende hvitespasninger (inkludert mellomrom og faner)

For å fjerne alle hvitespasene fra begynnelsen av hver linje (ledende hvitespaser), bruk følgende kommando:

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

Produksjon:

Følgende utdata dukket opp etter å ha kjørt kommandoen ovenfor, som viser at alle ledende hvitespasninger er fjernet fra teksten.

Du kan også bruke følgende kommando for å bekrefte at alle de ledende hvitfarene er fjernet:

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

Fra utgangen kan du se at det ikke er noe (*) symbol i begynnelsen av linjene som verifiserer at alle de ledende hvitfarene fjernes.

For å fjerne de ledende hvitespeddene fra bare en bestemt linje (la oss si linje nummer 2), kan du bruke følgende kommando:

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

Fjern alle etterfølgende hvitespasninger (inkludert mellomrom og faner)

For å fjerne alle hvitespasene fra enden av hver linje (etterfølgende hvitespaser), bruk følgende kommando:

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

Produksjon:

Følgende utdata dukket opp etter å ha kjørt kommandoen ovenfor, som viser at alle de etterfølgende hvitbildene er fjernet fra teksten.

Du kan også bruke følgende kommando for å bekrefte at alle etterfølgende hvitfarer er fjernet.

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

Fra utgangen kan du se at det ikke er noe (*) symbol på slutten av linjene som verifiserer at alle de etterfølgende hvitfarene fjernes.

For å fjerne de etterfølgende hvitespasene fra bare en bestemt linje (la oss si linje nummer 2), kan du bruke følgende kommando:

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

Fjern både ledende og etterfølgende hvitespasninger

For å fjerne alle hvitespeddene fra både start og slutt på hver linje (i.e. Både ledende og etterfølgende hvitespasninger) Bruk følgende kommando:

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

Produksjon:

Følgende utdata dukket opp etter å ha kjørt kommandoen ovenfor, som viser at både de ledende og etterfølgende hvitfarene er fjernet fra teksten.

Du kan også bruke følgende kommando for å bekrefte at både de ledende og etterfølgende hvitbildene er fjernet.

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

Fra utgangen kan du se at det ikke er noe (*) symbol i starten eller slutten av linjene som verifiserer at alle ledende og etterfølgende hvitder fjernes.

For å fjerne både de ledende og etterfølgende hvitfarene fra bare en spesifikk linje (la oss si linje nummer 2), kan du bruke følgende kommando:

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

Bytt ut flere hvitespaser med enkelthvit

I noen tilfeller er det flere hvitespaser på samme sted i filen, men du trenger bare enkeltblomst. Du kan gjøre det ved å erstatte de flere områdene med et enkelt rom ved å bruke SED.

Følgende kommando vil erstatte alle flere hvitespasninger med enkeltblomst fra hver linje i "Testfile".

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

Produksjon:

Følgende utdata dukket opp etter å ha kjørt kommandoen ovenfor, som viser at de flere hvitespasene er erstattet med det eneste hvitrommet.

Du kan også bruke følgende kommando for å verifisere om flere hvitespaser erstattes med enkeltblomst:

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

Fra utgangen kan du se det enkle (*) symbolet på hvert sted som verifiserer at alle forekomster av de flere hvitbladene erstattes med et enkelt hvitrom.

Så dette handlet om å fjerne hvitespasene fra dataene dine ved hjelp av SED. I denne artikkelen har du lært hvordan du bruker SED for å fjerne alle hvitfarer fra dataene dine, bare fjerne ledende eller etterfølgende hvitrom, og fjerne både bly og etterfølgende hvitrom. Du har også lært hvordan du erstatter flere mellomrom med et enkelt rom. Det vil nå være enkelt for deg å fjerne hvitfarer fra en fil som inneholder hundrevis eller tusenvis av linjer.