Följande inkluderar några scenarier där det kan vara nödvändigt att ta bort vita utrymmen:
- För att omformatera källkoden
- Att rensa data
- För att förenkla kommandoradsutgångar
Det är möjligt att ta bort mellanslag manuellt om en fil som bara innehåller några få rader. Men för en fil som innehåller hundratals rader blir det svårt att ta bort alla vita utrymmen manuellt. Det finns olika kommandoradsverktyg tillgängliga för detta ändamål, inklusive sed, awk, cut och tr. Bland dessa verktyg är awk en av de mest kraftfulla kommandona.
Vad är awk?
Awk är ett kraftfullt och användbart skriptspråk som används vid textmanipulation och rapportgenerering. Awk-kommandot förkortas med initialerna var och en av folket (Aho, Weinberger och Kernighan) som utvecklade det. Med Awk kan du definiera variabler, numeriska funktioner, strängar och aritmetiska operatorer; skapa formaterade rapporter; och mer.
Den här artikeln förklarar användningen av kommandot awk för att trimma vita utrymmen. Efter att ha läst den här artikeln lär du dig hur du använder kommandot awk för att utföra följande:
- Trimma alla mellanslag i en fil
- Trimma ledande vita utrymmen
- Trimma efterföljande vita utrymmen
- Trimma både ledande och efterföljande mellanslag
- Byt ut flera mellanslag med ett enda mellanslag
Kommandona i den här artikeln utfördes på en Ubuntu 20.04 Focal Fossa-system. Samma kommandon kan dock också utföras på andra Linux-distributioner. Vi använder standardapplikationen Ubuntu Terminal för att köra kommandona i den här artikeln. Du kan komma åt terminalen med tangentbordsgenvägen Ctrl + Alt + T.
För demonstrationsändamål kommer vi att använda exempelfilen med namnet “sample.Text.”För att utföra exemplen i den här artikeln.
Visa alla blanksteg i en fil
För att se alla vita utrymmen i en fil, rör utmatningen från kattkommandot till tr-kommandot enligt följande:
$ kattprov.txt | tr "" "*" | tr "\ t" "&"Detta kommando ersätter alla mellanslag i den angivna filen med (*) -tecknet. När du har angett det här kommandot kommer du att kunna se tydligt var alla blanksteg (inklusive både ledande och efterföljande blanksteg) finns i filen.
* Tecken i följande skärmdump visar var alla mellanslag finns i exempelfilen. En enda * representerar enstaka blanksteg.
Trimma alla vita utrymmen
För att ta bort alla mellanslag från en fil, rör kommandot out of cat till kommandot awk enligt följande:
$ kattprov.txt | awk 'gsub (/ /, ""); skriva ut 'Var
- gsub (står för global substitution) är en substitutionsfunktion
- / / representerar vitt utrymme
- "" representerar ingenting (trimma strängen)
Ovanstående kommando ersätter alla mellanslag (/ /) med ingenting (“”).
I följande skärmdump kan du se att alla blanksteg, inklusive de ledande och bakre blanksteg, har tagits bort från utdata.
Trimma ledande vita utrymmen
För att ta bort endast de ledande vita utrymmena från filen, rör kommandot out of cat till kommandot awk enligt följande:
$ kattprov.txt | awk 'sub (/ ^ [\ t] + /, ""); skriva ut 'Var
- sub är en substitutionsfunktion
- ^ representerar början på strängen
- [\ t]+ representerar ett eller flera mellanslag
- "" representerar ingenting (trimma strängen)
Ovanstående kommando ersätter ett eller flera mellanslag i början av strängen (^ [\ t] +) med ingenting (“”) för att ta bort de ledande vita utrymmena.
I följande skärmdump kan du se att alla ledande blanksteg har tagits bort från utdata.
Du kan använda följande kommando för att verifiera att ovanstående kommando har tagit bort de ledande vita utrymmena:
$ kattprov.txt | awk 'sub (/ ^ [\ t] + /, ""); skriva ut '| tr "" "*" |tr "\ t" "&"
I skärmdumpen nedan är det tydligt att endast de ledande vita utrymmena har tagits bort.
Trim släta vita utrymmen
För att ta bort endast de efterföljande vita utrymmena från en fil, rör kommandot out of cat till kommandot awk enligt följande:
$ kattprov.txt | awk 'sub (/ [\ t] + $ /, ""); skriva ut 'Var
- sub är en substitutionsfunktion
- [\ t]+ representerar ett eller flera mellanslag
- $ representerar slutet på strängen
- "" representerar ingenting (trimma strängen)
Ovanstående kommando ersätter ett eller flera mellanslag i slutet av strängen ([\ t] + $) med ingenting (“”) för att ta bort de efterföljande vita utrymmena.
Du kan använda följande kommando för att verifiera att ovanstående kommando har tagit bort de efterföljande vita utrymmena:
$ kattprov.txt | awk 'sub (/ [\ t] + $ /, ""); skriva ut '| tr "" "*" | tr "\ t" "&"Från skärmdumpen nedan är det tydligt att de bakre vita utrymmena har tagits bort.
Trimma både ledande och efterföljande mellanslag
För att ta bort både de ledande och efterföljande vita utrymmena från en fil, rör kommandot out of cat till kommandot awk enligt följande:
$ kattprov.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); skriva ut 'Var
- gsub är en global substitutionsfunktion
- ^ [\ t]+ representerar ledande vita utrymmen
- [\ t] + $ representerar efterföljande vita utrymmen
- "" representerar ingenting (trimma strängen)
Ovanstående kommando ersätter både ledande och bakre utrymme (^ [\ t]+ [\ t] + $) utan något (“”) för att ta bort dem.
För att avgöra om ovanstående kommando har tagit bort både de ledande och efterföljande vita utrymmena i filen, använd följande kommando:
$ kattprov.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); skriva ut '|tr "" "*" | tr "\ t" "&"
Från skärmdumpen nedan är det tydligt att både de ledande och efterföljande vita utrymmena har tagits bort, och bara de vita mellanrummen kvar.
Ersätt flera mellanslag med ett mellanslag
För att ersätta flera mellanslag med ett enda utrymme, rör kommandot out of cat till kommandot awk enligt följande:
$ kattprov.txt | awk 'gsub (/ [] + /, ""); skriva ut 'Var:
- gsub är en global substitutionsfunktion
- []+ representerar ett eller flera blanksteg
- "" representerar ett vitt utrymme
Ovanstående kommando ersätter flera mellanslag ([] +) med ett enda vitt mellanslag (““).
Du kan använda följande kommando för att verifiera att kommandot ovan har ersatt flera mellanslag med vita mellanslag:
$ kattprov.txt | awk 'sub (/ [\ t] + $ /, ""); skriva ut '| | tr "" "*" | tr "\ t" "&"Det fanns flera mellanslag i vår exempelfil. Som du kan se flera blanksteg i provet.txt-filen ersattes med ett enda vitt utrymme med kommandot awk.
Använd bara kommandot awk för att trimma mellanslag i endast de rader som innehåller en viss karaktär, som komma, kolon eller semikolon -F ingångsseparator.
Till exempel visas nedan vår exempelfil som innehåller blanksteg i varje rad.
För att ta bort mellanslag från endast de rader som innehåller ett komma (,) skulle kommandot vara som följer:
$ kattprov1.txt | awk -F, '/, / gsub (/ /, ""); skriva ut'Var (-F,) är inmatningsfältavgränsaren.
Ovanstående kommando tar bara bort och visar mellanslag från raderna som innehåller det angivna tecknet (,) i dem. Resten av raderna förblir opåverkade.
Slutsats
Det är allt du behöver veta för att trimma mellanslag i dina data med kommandot awk. Det kan krävas av flera olika skäl att ta bort mellanslag från dina data. Oavsett orsaken är det enkelt att klippa alla vita utrymmen i dina data med hjälp av kommandona som beskrivs i den här artikeln. Du kan till och med trimma ledande eller efterföljande mellanslag, trimma både ledande och efterföljande mellanslag och ersätta flera mellanslag med ett enda mellanslag med kommandot awk.