sed

Sed Ta bort mellanslag

Sed Ta bort mellanslag
Att ta bort blanksteg i dokument är ett viktigt formateringssteg som krävs för att förbättra den övergripande layouten för en text och för att säkerställa att data är rena och städade. Det hjälper till att lagra endast nödvändig data och bli av med onödiga ledande och efterföljande utrymmen. Nedan följer några scenarier där du kan behöva ta bort vita utrymmen:

Om vi ​​talar om ledande blanksteg är de relativt lätta att upptäcka som i början av texten. Det är dock inte lätt att upptäcka de bakre vita utrymmena. Detsamma är fallet med dubbla mellanslag som ibland är svåra att upptäcka. Allt blir mer utmanande när du behöver ta bort alla de ledande och efterföljande vita utrymmena från ett dokument som innehåller tusentals rader.

För att ta bort blanksteg från ditt dokument kan du använda olika verktyg som awk, sed, cut och tr. I vissa andra artiklar har vi diskuterat användningen av awk för att ta bort vita utrymmen. I den här artikeln kommer vi att diskutera användningen av sed för att ta bort vita utrymmen från data.

Du lär dig hur du använder sed för att:

Vi kör kommandona på Ubuntu 20.04 Focal Fossa. Du kan också köra samma kommandon på andra Linux-distributioner. Vi använder standard Ubuntu Terminal-applikationen för att köra kommandona. För att öppna terminalen använder du tangentbordsgenvägen Ctrl + Alt + T.

Vad är Sed

Sed (står för stream editor) är ett mycket kraftfullt och praktiskt verktyg i Linux som gör att vi kan utföra grundläggande textmanipulationer på ingångsströmmarna. Det är inte en textredigerare, men det hjälper till att manipulera och filtrera text. Den tar emot inmatningsströmmarna och redigerar den enligt användarens instruktioner och skriver sedan ut den transformerade texten till skärmen.

Med sed kan du:

Använda Sed för att ta bort vita utrymmen

Vi använder följande syntax för att ta bort blanksteg från texten:

s / REGEXP / ersättning / flaggor

Var

Vanliga uttryck

Några av de vanliga uttrycken vi kommer att använda här är:

För demonstrationsändamål kommer vi att använda följande exempelfil med namnet “testfil”.

Visa alla blanksteg i en fil

För att hitta alla mellanslag i din fil, rör utmatningen av cat-kommandot till tr-kommandot så här:

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

Det här kommandot ersätter alla blanksteg i din fil med (*) symbol, vilket gör det lättare att upptäcka alla mellanslag, oavsett om de är enkla, flera, ledande eller efterföljande.

I följande skärmdump kan du se att blanksteg ersätts med * -symbolen.

Ta bort alla mellanslag (inklusive mellanslag och flikar)

I vissa fall måste du ta bort alla mellanslag från data, dvs.e. ledande, efterföljande och vita mellanrum mellan texterna. Följande kommando tar bort alla mellanslag från "testfilen".

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

Notera: Sed ändrar inte dina filer om du inte sparar utdata i filen.

Produktion:

Efter att ha kört ovanstående kommando uppträdde följande utdata som visar att alla mellanslag har tagits bort från texten.

Du kan också använda följande kommando för att verifiera att alla mellanslag har tagits bort.

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

Från utgången kan du se att det inte finns någon (*) symbol vilket betyder att alla vita utrymmen har tagits bort.

För att ta bort alla mellanslag men bara från en specifik rad (låt oss säga rad nummer 2) kan du använda följande kommando:

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

Ta bort alla ledande blanksteg (inklusive mellanslag och flikar)

För att ta bort alla blanksteg från början av varje rad (ledande blanksteg), använd följande kommando:

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

Produktion:

Följande utdata uppträdde efter att ha kört ovanstående kommando, som visar att alla ledande blanksteg har tagits bort från texten.

Du kan också använda följande kommando för att verifiera att alla ledande blanksteg har tagits bort:

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

Från utgången kan du se att det inte finns någon (*) symbol i början av raderna som verifierar att alla ledande vita utrymmen har tagits bort.

För att ta bort de ledande vita utrymmena från endast en specifik rad (låt oss säga rad nummer 2) kan du använda följande kommando:

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

Ta bort alla efterföljande blanksteg (inklusive mellanslag och flikar)

För att ta bort alla mellanslag från slutet av varje rad (efterföljande blanksteg), använd följande kommando:

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

Produktion:

Följande utdata visades efter att ha kört ovanstående kommando, som visar att alla efterföljande blanksteg har tagits bort från texten.

Du kan också använda följande kommando för att verifiera att alla efterföljande blanksteg har tagits bort.

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

Från utgången kan du se att det inte finns någon (*) symbol i slutet av raderna som verifierar att alla efterföljande vita utrymmen har tagits bort.

För att ta bort de efterföljande vita utrymmena från en specifik rad (låt oss säga rad nummer 2) kan du använda följande kommando:

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

Ta bort både ledande och bakre vita utrymmen

Att ta bort alla mellanslag från både början och slutet av varje rad (i.e. både ledande och efterföljande blanksteg), använd följande kommando:

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

Produktion:

Följande utdata dök upp efter att ha kört ovanstående kommando, vilket visar att både de ledande och efterföljande vita utrymmena har tagits bort från texten.

Du kan också använda följande kommando för att verifiera att både de ledande och efterföljande vita utrymmena har tagits bort.

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

Från utgången kan du se att det inte finns någon (*) symbol i början eller slutet av raderna som verifierar att alla ledande och efterföljande vita utrymmen har tagits bort.

För att ta bort både de ledande och efterföljande mellanslag från endast en specifik rad (låt oss säga rad nummer 2) kan du använda följande kommando:

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

Ersätt flera blanksteg med enstaka mellanslag

I vissa fall finns det flera blanksteg på samma plats i filen, men du behöver bara enstaka blanksteg. Du kan göra det genom att ersätta de flera utrymmena med ett enda utrymme med sed.

Följande kommando kommer att ersätta alla flera blanksteg med enstaka blanksteg från varje rad i "testfilen".

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

Produktion:

Följande utdata uppträdde efter att ha kört ovanstående kommando, som visar att flera blanksteg har ersatts med det enda blanksteget.

Du kan också använda följande kommando för att verifiera om flera blanksteg ersätts med enstaka mellanslag:

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

Från utgången kan du se den enskilda (*) symbolen på varje plats som verifierar att alla förekomster av flera vita utrymmen ersätts med ett enda utrymme.

Så det handlade om att ta bort vita utrymmen från dina data med sed. I den här artikeln har du lärt dig hur man använder sed för att ta bort alla mellanslag från dina data, ta bort endast det ledande eller efterföljande mellanslaget och ta bort både ledande och efterföljande. Du har också lärt dig hur man ersätter flera mellanslag med ett enda mellanslag. Det blir nu lätt för dig att ta bort blanksteg från en fil som innehåller hundratals eller tusentals rader.

Hur man laddar ner och spelar Sid Meier's Civilization VI på Linux
Introduktion till spelet Civilization 6 är ett modernt intag av det klassiska konceptet som introducerades i serien Age of Empires-spel. Idén var gans...
Hur man installerar och spelar Doom på Linux
Introduktion till Doom Doom-serien har sitt ursprung på 90-talet efter att den ursprungliga Doom släpptes. Det blev en omedelbar hit och från den tide...
Vulkan för Linux-användare
Med varje ny generation grafikkort ser vi spelutvecklare driva gränserna för grafisk trohet och komma ett steg närmare fotorealism. Men trots all kred...