Awk

Awk Trim Whitespace

Awk Trim Whitespace
Som programmør skal du muligvis arbejde med forskellige filer for at gemme og manipulere data. En grundlæggende filmanipulationsopgave involverer fjernelse af de hvide rum i filer. Hvide mellemrum er sammensat af mellemrum, blanke linjer, nbsp og faner. Programmører har ofte brug for at fjerne mellemrum, så kun de nødvendige data lagres, og unødvendige mellemrum kan elimineres. De hvide rum kan enten føre mellemrum (i starten af ​​linjen) eller efterfølgende (i slutningen af ​​linjen).

Følgende inkluderer nogle scenarier, hvor fjernelse af mellemrum kan være nødvendigt:

Det er muligt at fjerne mellemrum manuelt, hvis en fil, der kun indeholder et par linjer. Men for en fil, der indeholder hundredvis af linjer, vil det være svært at fjerne alle de hvide rum manuelt. Der er forskellige kommandolinjeværktøjer tilgængelige til dette formål, herunder sed, awk, cut og tr. Blandt disse værktøjer er awk en af ​​de mest kraftfulde kommandoer.

Hvad er awk?

Awk er et kraftfuldt og nyttigt script-sprog, der bruges til tekstmanipulation og generering af rapporter. Awk-kommandoen forkortes ved hjælp af initialerne hver af de mennesker (Aho, Weinberger og Kernighan), som udviklede den. Awk giver dig mulighed for at definere variabler, numeriske funktioner, strenge og aritmetiske operatorer; oprette formaterede rapporter og mere.

Denne artikel forklarer brugen af ​​awk-kommandoen til at trimme hvide rum. Efter at have læst denne artikel lærer du, hvordan du bruger kommandoen awk til at udføre følgende:

Kommandoerne i denne artikel blev udført på en Ubuntu 20.04 Focal Fossa-system. De samme kommandoer kan dog også udføres på andre Linux-distributioner. Vi bruger standard Ubuntu Terminal-applikationen til at køre kommandoerne i denne artikel. Du kan få adgang til terminalen ved hjælp af tastaturgenvejen Ctrl + Alt + T.

Til demonstrationsformål bruger vi prøvefilen med navnet “prøve.txt.”For at udføre eksemplerne i denne artikel.

Se alle hvide rum i en fil

For at se alle de hvide mellemrum, der findes i en fil, rør output fra kat-kommandoen til tr-kommandoen som følger:

$ katteprøve.txt | tr "" "*" | tr "\ t" "&"

Denne kommando erstatter alle mellemrum i den givne fil med tegnet (*). Når du har indtastet denne kommando, vil du være i stand til at se tydeligt, hvor alle hvide mellemrum (inklusive både ledende og bageste hvide rum) er til stede i filen.

* Tegnene i det følgende skærmbillede viser, hvor alle de hvide mellemrum er til stede i prøvefilen. En enkelt * repræsenterer et enkelt mellemrum.

Trim alle hvide rum

For at fjerne alle de hvide rum fra en fil, rør kommandoen ud af kat til kommandoen awk som følger:

$ katteprøve.txt | awk 'gsub (/ /, ""); Print '

Hvor

Ovenstående kommando erstatter alle mellemrum (/ /) med intet (“”).

I det følgende skærmbillede kan du se, at alle hvide rum, inklusive de forreste og bageste hvide rum, er fjernet fra output.

Trim førende hvide rum

For kun at fjerne de førende mellemrum fra filen, rør kommandoen ud af kat til kommandoen awk som følger:

$ katteprøve.txt | awk 'sub (/ ^ [\ t] + /, ""); Print '

Hvor

Ovenstående kommando erstatter et eller flere mellemrum i begyndelsen af ​​strengen (^ [\ t] +) med intet (“”) for at fjerne de ledende hvide rum.

I det følgende skærmbillede kan du se, at alle de førende hvide rum er fjernet fra output.

Du kan bruge følgende kommando til at kontrollere, at ovenstående kommando har fjernet de førende hvide rum:

$ katteprøve.txt | awk 'sub (/ ^ [\ t] + /, ""); udskriv '| tr "" "*" |
tr "\ t" "&"

I skærmbilledet nedenfor er det tydeligt synligt, at kun de førende hvide rum er fjernet.

Trim efterfølgende hvide rum

For kun at fjerne de bageste mellemrum fra en fil, rør kommandoen ud af kat til kommandoen awk som følger:

$ katteprøve.txt | awk 'sub (/ [\ t] + $ /, ""); Print '

Hvor

Ovenstående kommando erstatter et eller flere mellemrum i slutningen af ​​strengen ([\ t] + $) med intet (“”) for at fjerne de efterfølgende hvide rum.

Du kan bruge følgende kommando til at kontrollere, at ovenstående kommando har fjernet de efterfølgende hvide rum:

$ katteprøve.txt | awk 'sub (/ [\ t] + $ /, ""); udskriv '| tr "" "*" | tr "\ t" "&"

Fra nedenstående skærmbillede er det tydeligt synligt, at de bageste hvide rum er fjernet.

Trim både førende og efterfølgende hvide rum

For at fjerne både de ledende og bageste mellemrum fra en fil, rør kommandoen ud af kat til kommandoen awk som følger:

$ katteprøve.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); Print '

Hvor

Ovenstående kommando erstatter både det ledende og det bageste mellemrum (^ [\ t]+ [\ t] + $) med intet (“”) til at fjerne dem.

For at afgøre, om ovenstående kommando har fjernet både de ledende og efterfølgende hvide områder i filen, skal du bruge følgende kommando:

$ katteprøve.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); udskriv '|
tr "" "*" | tr "\ t" "&"

Fra nedenstående skærmbillede er det tydeligt synligt, at både de forreste og bageste hvide rum er fjernet, og kun de hvide mellemrum mellem strengene er tilbage.

Udskift flere mellemrum med et enkelt mellemrum

For at erstatte flere mellemrum med et enkelt mellemrum skal du røre kommandoen ud af kat til kommandoen awk som følger:

$ katteprøve.txt | awk 'gsub (/ [] + /, ""); Print '

Hvor:

Ovenstående kommando erstatter flere hvide mellemrum ([] +) med et enkelt hvidt mellemrum (““).

Du kan bruge følgende kommando til at kontrollere, at ovenstående kommando har erstattet flere mellemrum med hvide mellemrum:

$ katteprøve.txt | awk 'sub (/ [\ t] + $ /, ""); udskriv '| | tr "" "*" | tr "\ t" "&"

Der var flere mellemrum i vores prøvefil. Som du kan se, flere hvide mellemrum i prøven.txt-filen blev erstattet med et enkelt hvidt mellemrum ved hjælp af kommandoen awk.

Brug kun kommandoen awk til at trimme de hvide mellemrum i de linjer, der indeholder en bestemt karakter, f.eks. Komma, kolon eller semikolon -F indgangsseparator.

For eksempel er nedenstående vores eksemplarfil, der indeholder mellemrum i hver linje.

For at fjerne de hvide mellemrum fra kun de linjer, der indeholder et komma (,), vil kommandoen være som følger:

$ katteprøve 1.txt | awk -F, '/, / gsub (/ /, ""); Print'

Hvor (-F,) er inputfeltadskilleren.

Ovenstående kommando fjerner og viser kun de hvide mellemrum fra de linjer, der indeholder det angivne tegn (,) i dem. Resten af ​​linjerne forbliver upåvirket.

Konklusion

Det er alt hvad du behøver at vide for at trimme de hvide rum i dine data ved hjælp af kommandoen awk. Fjernelse af de hvide rum fra dine data kan være påkrævet af flere forskellige årsager. Uanset årsagen er, kan du nemt trimme alle de hvide mellemrum i dine data ved hjælp af kommandoerne beskrevet i denne artikel. Du kan endda trimme forreste eller bageste mellemrum, trimme både forreste og bageste hvide mellemrum og erstatte flere mellemrum med et enkelt mellemrum med kommandoen awk.

Bedste kommandoliniespil til Linux
Kommandolinjen er ikke kun din største allierede, når du bruger Linux, den kan også være kilde til underholdning, fordi du kan bruge den til at spille...
Bedste apps til Gamepad Mapping til Linux
Hvis du kan lide at spille spil på Linux med en gamepad i stedet for et typisk tastatur- og musesystem, er der nogle nyttige apps til dig. Mange pc-sp...
Nyttige værktøjer til Linux-spillere
Hvis du kan lide at spille spil på Linux, er chancerne for, at du måske har brugt apps og hjælpeprogrammer som Wine, Lutris og OBS Studio for at forbe...