BASH-programmering

Ta bort karaktärer från sträng i Bash

Ta bort karaktärer från sträng i Bash

Ibland kan du behöva ta bort tecken från en sträng. Oavsett orsaken är, Linux ger dig olika inbyggda, praktiska verktyg som låter dig ta bort tecken från en sträng i Bash. Den här artikeln visar hur du använder dessa verktyg för att ta bort tecken från en sträng.

Artikeln beskriver hur man utför följande:

Kommandona som visas i den här artikeln utfördes i Ubuntu 20.04 Focal Fossa. Samma kommandon kan också utföras på andra Linux-distributioner som har ovanstående verktyg tillgängliga. Vi använder standardapplikationen Terminal för att köra kommandona. Du kan komma åt Terminal-applikationen med tangentbordsgenvägen Ctrl + Alt + T.

Ta bort tecken från sträng med sed

Sed är ett kraftfullt och praktiskt verktyg som används för att redigera textströmmar. Det är en icke-interaktiv textredigerare som låter dig utföra grundläggande textmanipulationer på inmatningsströmmar. Du kan också använda sed för att ta bort oönskade tecken från strängar.

För demonstrationsändamål använder vi en provsträng och rör sedan den till kommandot sed.

Ta bort specifikt tecken från sträng

Med sed kan du ta bort ett visst tecken från en sträng. Till exempel för att ta bort “h” från strängen “Hej hur mår du?”Kommandot skulle vara:

$ echo "hej, hur mår du??"| sed's / h // '

Detta tar bara bort den första förekomsten av 'h' i strängen.

För att ta bort alla förekomster av 'h' från strängen, använd följande kommando:

$ echo "hej, hur mår du?"| sed's / h // g '

Var g står för global. Det tar bort alla förekomster av 'h' i strängen.

Ta bort första tecknet från strängen

Ta bort det första tecknet från strängen “Hej hur mår du?” kommandot skulle vara:

$ echo "hej, hur mår du??"| sed's / ^.// 'fil

Var (.) matchar exakt ett enda tecken och (^) matchar vilket tecken som helst i början av strängen.

Ta bort den sista karaktären från strängen

Ta bort det sista tecknet från strängen “Hej hur mår du?” kommandot skulle vara:

$ echo "hej, hur mår du?"| sed's /.$ // '

Var (.) matchar exakt ett enda tecken och ($) matchar vilket tecken som helst i slutet av strängen.

Ta bort första och sista tecknet från sträng

Ta bort det första och sista tecknet från strängen “Hej hur mår du?” kommandot skulle vara:

$ echo "hej, hur mår du?"| sed's / ^.//; s /.$ // '

Ta bort tecken från sträng med awk

Awk är ett kraftfullt skriptspråk som används för mönstermatchning, tillsammans med textbehandling. Med Awk kan du filtrera och omvandla text på olika sätt. Du kan också använda awk för att ta bort tecken från strängar.

För demonstrationsändamål använder vi en exempelsträng och rör sedan den till kommandot awk.

Ta bort första tecknet från en sträng

Ta bort det första tecknet från strängen “Hej hur mår du?” kommandot skulle vara:

$ echo "hej, hur mår du?"| awk 'utskriftssubstrat ($ 0, 2)'

Där ($ 0) är hela målsträngen och (2) är karaktärens startposition. Ovanstående kommando tar bort det första tecknet 'h', 'teckennummer' 1 'och returnerar målsträngen som börjar med det andra tecknet' e.''

Ta bort de två första tecknen från strängen

Du kan också ta bort ett visst antal tecken från början av en sträng. Till exempel för att ta bort de två första tecknen från strängen “Hej hur mår du?” kommandot skulle vara:

$ echo "hej, hur mår du??"| awk 'utskriftssubstrat ($ 0, 3)'

Ovanstående kommando tar bort de två första tecknen, 'he' eller teckennummer '1 och 2', och returnerar målsträngen som börjar med teckennumret '3' eller 'l.''

Ta bort den sista karaktären från strängen

Ta bort det sista tecknet från “Hej hur mår du?” kommandot skulle vara:

$ echo "hej, hur mår du?"| awk 'utskriftssubstrat ($ 0, 1, längd ($ 0) -1)'

Var längd ($ 0) -1 betyder att dra av '1från den totala karaktärslängden.

Ovanstående kommando kommer att skriva ut strängen som börjar med teckennummer '1' upp till längd ($ 0) -1 för att ta bort den sista karaktären.

Det finns '19tecken (inklusive mellanslag) i strängen ovan. Kommandot fungerar genom att skriva ut alla tecken, börjar med tecken '1'och upp till karaktär'18,"medan du tar bort det sista tecknet"19.''

Ta bort de två sista tecknen från sträng

Ta bort de två sista tecknen från “Hej hur mår du?”Kommandot skulle vara:

$ echo "hej, hur mår du?"| awk 'utskriftssubstrat ($ 0, 1, längd ($ 0) -2)'

Var längd ($ 0) -2 betyder att dra av '2från den totala karaktärslängden.

Ovanstående kommando skriver ut strängen, börjar med teckennummer '1'och upp till teckennummer'längd ($ 0) -2,för att ta bort de två sista tecknen i strängen.

Ta bort både första och sista tecken från sträng

Ta bort både första och sista tecknet från strängen “Hej hur mår du?” kommandot skulle vara:

$ echo "hej, hur mår du?"| awk 'utskriftssubstrat ($ 0, 2, längd ($ 0) - 2)'

Var längd ($ 0) -2 betyder att dra av '2från den totala karaktärslängden.

Ovanstående kommando skriver ut strängen, börjar med teckennummer '2'upp till teckennummer'längd ($ 0) -2,för att ta bort det första och sista tecknet.

Ta bort karaktären från strängen med snitt

Cut är ett kommandoradsverktyg som vanligtvis används för att extrahera en del text från en sträng eller fil och skriva ut resultatet till en standardoutput. Du kan också använda det här kommandot för att ta bort tecken från en sträng.

För demonstrationsändamål använder vi en provsträng och rör sedan den till klippkommandot.

Ta bort första tecknet från strängen

För att ta bort det första tecknet från strängen, “Hej hur mår du?” kommandot skulle vara:

$ echo "hej, hur mår du?"| klipp -c 2-

Detta kommando skriver ut strängen, börjar med det andra tecknet, medan det första tecknet tas bort.

Ta bort de fyra första tecknen från sträng

Ta bort de fyra första tecknen från strängen “Hej hur mår du?” kommandot skulle vara:

$ echo "hej, hur mår du?"| klipp -c 5-

Detta kommando kommer att skriva ut strängen, med början från det femte tecknet, medan de fyra första tecknen tas bort.

Skriv sträng mellan 2: a och 5: e tecken

Att skriva ut strängen “Hej hur mår du?” mellan andra och femte tecken, kommandot skulle vara:

$ echo "hej, hur mår du?"| klipp -c 2-5

Detta kommando kommer att skriva ut strängen, med början från det andra tecknet och upp till det femte tecknet, medan de återstående början och avslutande tecken tas bort.

Ta bort den sista karaktären från strängen

Ta bort det sista tecknet från strängen “Hej hur mår du?” Använd skära kommando med varv, som följer:

$ echo "hej, hur mår du?"| rev | klipp -c2- | rev

Detta kommando fungerar genom att först vända strängen, sedan klippa ut det första tecknet och slutligen vända det igen för att ge dig önskad utdata.

Ta bort de fyra sista tecknen från sträng

Ta bort de fyra sista tecknen från raden “Hej hur mår du?” kommandot skulle vara:

$ echo "hej, hur mår du?"| rev | klipp -c5- | rev

Detta kommando fungerar genom att först vända strängen, sedan klippa de fyra första tecknen och sedan vända på den igen för att ge dig önskad utdata.

Ta bort första och sista tecken från sträng

Ta bort de första och sista tecknen från strängen “Hej hur mår du?” Använd skära kommando med varv, som följer:

$ echo "hej värld!"| klipp -c2- | rev | klipp -c2- | rev

Detta kommando fungerar genom att klippa ut det första tecknet, sedan vända på strängen och klippa ut det första tecknet och sedan vända på det igen för att ge dig önskad utdata.

Ta bort karaktär från sträng med tr

Tr-kommandot (förkortning för översätt) används för att översätta, pressa och ta bort tecken från en sträng. Du kan också använda tr för att ta bort tecken från en sträng.

För demonstrationsändamål använder vi en exempelsträng och rör den sedan till tr-kommandot.

Ta bort alla förekomster av karaktär

Med tr-kommandot kan du ta bort alla förekomster av gemener eller versaler från din sträng. Till exempel, för att ta bort alla förekomster av små bokstäver 'h' från strängen, skulle kommandot vara:

$ echo "Hej, hur mår du??"| tr -d h

På samma sätt, för att ta bort alla förekomster av stora bokstäver "H" från strängen, skulle kommandot vara:

$ echo "Hej, hur mår du??"| tr -d H

Du kan också använda tolkade sekvenser för att ta bort gemener eller versaler:

$ echo "Hej, hur mår du??"| tr -d [: övre:]

$ echo "HELLO, hur mår du??"| tr -d [: lägre:]

Ta bort alla förekomster av gemener och versaler

Du kan också ta bort alla förekomster av både gemener och versaler från en sträng. Till exempel kommer följande kommando att ta bort alla förekomster av tecknet 'h', både gemener och versaler.

$ echo "Hej, hur mår du??"| tr -d 'hH'

Ta bort alla förekomster av tecken inom ett specifikt intervall

För att ta bort alla förekomster av tecken från en sträng i det specifika intervallet 'd-h' skulle kommandot vara:

$ echo "hej, hur mår du?"| tr -d 'd-h'

Detta kommando tar bort alla tecken i intervallet 'd-h' (d, e, f, g, h) i strängen.

Slutsats

I Linux kommer det alltid att finnas mer än ett sätt att utföra ett enkelt jobb. Detsamma gäller för att ta bort tecken från en sträng. Den här artikeln visade dig fyra olika sätt att göra det, tillsammans med några exempel för att ta bort oönskade tecken från en sträng. Att bestämma vilket verktyg du ska använda beror på dina preferenser och, ännu viktigare, på vad du vill uppnå.

HD Remastered Games för Linux som aldrig tidigare hade en Linux-version
Många spelutvecklare och utgivare kommer med HD-remaster av gamla spel för att förlänga livstiden för franchisen, snälla fans som begär kompatibilitet...
Hur man använder AutoKey för att automatisera Linux-spel
AutoKey är ett verktyg för desktopautomatisering för Linux och X11, programmerat i Python 3, GTK och Qt. Med hjälp av dess skript och MACRO-funktional...
Hur man visar FPS-räknare i Linux-spel
Linux-spel fick ett stort tryck när Valve tillkännagav Linux-stöd för Steam-klient och deras spel 2012. Sedan dess har många AAA- och indiespel tagit ...