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:
- Ta bort tecken från sträng med sed
- Ta bort tecken från sträng med awk
- Ta bort karaktär från sträng med hjälp av klipp
- Ta bort tecken från sträng med tr
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:
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 / ^.// 'filVar (.) 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-5Detta 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- | revDetta 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- | revDetta 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- | revDetta 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 HDu 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å.