Følgende inkluderer noen scenarier der det kan være nødvendig å fjerne mellomrom:
- For å omformatere kildekoden
- Å rydde opp i data
- For å forenkle kommandolinjeutgangene
Det er mulig å fjerne mellomrom manuelt hvis en fil inneholder bare noen få linjer. Men for en fil som inneholder hundrevis av linjer, vil det være vanskelig å fjerne alle mellomrommene manuelt. Det er forskjellige kommandolinjeverktøy tilgjengelig for dette formålet, inkludert sed, awk, cut og tr. Blant disse verktøyene er awk en av de kraftigste kommandoene.
Hva er awk?
Awk er et kraftig og nyttig skriptspråk som brukes i tekstmanipulering og rapportgenerering. Awk-kommandoen forkortes ved hjelp av initialene hver av folket (Aho, Weinberger og Kernighan) som utviklet den. Awk lar deg definere variabler, numeriske funksjoner, strenger og regneoperatorer; lage formaterte rapporter; og mer.
Denne artikkelen forklarer bruken av awk-kommandoen for å trimme mellomrom. Etter å ha lest denne artikkelen vil du lære hvordan du bruker kommandoen awk til å utføre følgende:
- Trim alle mellomrommene i en fil
- Trim ledende mellomrom
- Trim etterfølgende mellomrom
- Trim både ledende og etterfølgende mellomrom
- Bytt ut flere mellomrom med ett mellomrom
Kommandoene i denne artikkelen ble utført på en Ubuntu 20.04 Focal Fossa system. Imidlertid kan de samme kommandoene utføres på andre Linux-distribusjoner. Vi bruker standard Ubuntu Terminal-applikasjon for å kjøre kommandoene i denne artikkelen. Du kan få tilgang til terminalen ved å bruke hurtigtasten Ctrl + Alt + T.
For demonstrasjonsformål vil vi bruke eksempelfilen kalt “sample.tekst.”For å utføre eksemplene i denne artikkelen.
Vis alle hvite mellomrom i en fil
For å se alle de mellomrom som er tilstede i en fil, rør utgangen fra cat-kommandoen til tr-kommandoen, som følger:
$ katteprøve.txt | tr "" "*" | tr "\ t" "&"Denne kommandoen erstatter alle mellomrommene i den gitte filen med tegnet (*). Etter at du har angitt denne kommandoen, vil du kunne se tydelig hvor alle mellomrommene (inkludert både ledende og etterfølgende mellomrom) er tilstede i filen.
* Tegnene i skjermbildet nedenfor viser hvor alle mellomrommene er til stede i eksempelfilen. En enkelt * representerer et enkelt mellomrom.
Trim alle hvite mellomrom
For å fjerne alle mellomrommene fra en fil, rør kommandoen ut av katten til kommandoen awk, som følger:
$ katteprøve.txt | awk 'gsub (/ /, ""); skrive ut 'Hvor
- gsub (står for global substitusjon) er en substitusjonsfunksjon
- / / representerer hvite rom
- “” representerer ingenting (trimm strengen)
Ovennevnte kommando erstatter alle mellomrom (/ /) med ingenting (“”).
I skjermbildet nedenfor kan du se at alle mellomrommene, inkludert de ledende og etterfølgende hvite områdene, er fjernet fra utgangen.
Trim Leading Whitespaces
For å fjerne bare de ledende mellomrommene fra filen, rør kommandoen ut av katten til kommandoen awk, som følger:
$ katteprøve.txt | awk 'sub (/ ^ [\ t] + /, ""); skrive ut 'Hvor
- under er en erstatningsfunksjon
- ^ representerer begynnelsen av strengen
- [\ t]+ representerer ett eller flere mellomrom
- “” representerer ingenting (trimm strengen)
Ovennevnte kommando erstatter ett eller flere mellomrom i begynnelsen av strengen (^ [\ t] +) med ingenting (“”) for å fjerne de ledende mellomrommene.
I skjermbildet nedenfor kan du se at alle de ledende mellomrommene er fjernet fra utdataene.
Du kan bruke følgende kommando for å bekrefte at kommandoen ovenfor har fjernet de ledende mellomrommene:
$ katteprøve.txt | awk 'sub (/ ^ [\ t] + /, ""); print '| tr "" "*" |tr "\ t" "&"
I skjermbildet nedenfor er det tydelig at bare de ledende mellomrommene er fjernet.
Trim Trailing Whitespaces
For å fjerne bare de etterfølgende mellomrommene fra en fil, rør kommandoen ut av katten til kommandoen awk, som følger:
$ katteprøve.txt | awk 'sub (/ [\ t] + $ /, ""); skrive ut 'Hvor
- under er en erstatningsfunksjon
- [\ t]+ representerer ett eller flere mellomrom
- $ representerer slutten på strengen
- “” representerer ingenting (trimm strengen)
Ovennevnte kommando erstatter ett eller flere mellomrom på slutten av strengen ([\ t] + $) med ingenting (“”) for å fjerne de etterfølgende mellomrommene.
Du kan bruke følgende kommando for å bekrefte at kommandoen ovenfor har fjernet de etterfølgende mellomrommene:
$ katteprøve.txt | awk 'sub (/ [\ t] + $ /, ""); print '| tr "" "*" | tr "\ t" "&"Fra skjermbildet nedenfor er det tydelig at de etterfølgende hvite områdene er fjernet.
Trim både ledende og etterfølgende mellomrom
For å fjerne både de ledende og etterfølgende mellomromene fra en fil, rør kommandoen ut av katt til kommandoen awk, som følger:
$ katteprøve.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); skrive ut 'Hvor
- gsub er en global substitusjonsfunksjon
- ^ [\ t]+ representerer ledende mellomrom
- [\ t] + $ representerer etterfølgende mellomrom
- “” representerer ingenting (trimm strengen)
Ovennevnte kommando erstatter både de ledende og etterfølgende mellomrom (^ [\ t]+ [\ t] + $) uten noe (“”) for å fjerne dem.
For å avgjøre om kommandoen ovenfor har fjernet både de ledende og etterfølgende mellomrommene i filen, bruker du følgende kommando:
$ katteprøve.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); print '|tr "" "*" | tr "\ t" "&"
Fra skjermbildet nedenfor er det tydelig at både de ledende og etterfølgende hvite rommene er fjernet, og bare de hvite rommene mellom strengene er igjen.
Erstatt flere mellomrom med ett mellomrom
For å erstatte flere mellomrom med ett mellomrom, rør kommandoen ut av katt til kommandoen awk, som følger:
$ katteprøve.txt | awk 'gsub (/ [] + /, ""); skrive ut 'Hvor:
- gsub er en global substitusjonsfunksjon
- []+ representerer ett eller flere mellomrom
- “” representerer ett hvitt rom
Ovennevnte kommando erstatter flere mellomrom ([] +) med ett enkelt hvitt mellomrom (““).
Du kan bruke følgende kommando for å bekrefte at kommandoen ovenfor har erstattet flere mellomrom med mellomrom:
$ katteprøve.txt | awk 'sub (/ [\ t] + $ /, ""); print '| | tr "" "*" | tr "\ t" "&"Det var flere mellomrom i eksempelfilen vår. Som du kan se, flere mellomrom i utvalget.txt-filen ble erstattet med et enkelt hvitt mellomrom ved å bruke kommandoen awk.
For å trimme mellomrommene bare i de linjene som inneholder et bestemt tegn, for eksempel komma, kolon eller semikolon, bruker du kommandoen awk med -F inngangsseparator.
For eksempel, nedenfor, er eksempelfilen vår som inneholder mellomrom på hver linje.
For å fjerne mellomrommene fra bare linjene som inneholder komma (,), vil kommandoen være som følger:
$ kattprøve 1.txt | awk -F, '/, / gsub (/ /, ""); skrive ut'Hvor (-F,) er inndatafelteskilleren.
Ovennevnte kommando vil bare fjerne og vise mellomrommene fra linjene som inneholder det spesifiserte tegnet (,) i dem. Resten av linjene forblir upåvirket.
Konklusjon
Det er alt du trenger å vite for å trimme mellomrommene i dataene dine ved hjelp av awk-kommandoen. Det kan være nødvendig å fjerne de tomme områdene fra dataene dine av flere forskjellige grunner. Uansett årsak, kan du enkelt trimme alle mellomrommene i dataene dine ved hjelp av kommandoene som er beskrevet i denne artikkelen. Du kan til og med trimme ledende eller etterfølgende mellomrom, trimme både ledende og etterfølgende mellomrom, og erstatte flere mellomrom med et enkelt mellomrom med kommandoen awk.