Noen ganger kan det hende du må fjerne tegn fra en streng. Uansett årsak er, gir Linux deg forskjellige innebygde, praktiske verktøy som lar deg fjerne tegn fra en streng i Bash. Denne artikkelen viser deg hvordan du bruker disse verktøyene til å fjerne tegn fra en streng.
Artikkelen dekker hvordan du utfører følgende:
- Fjern tegnet fra strengen ved hjelp av sed
- Fjern tegnet fra strengen ved hjelp av awk
- Fjern tegnet fra strengen ved hjelp av kuttet
- Fjern tegnet fra strengen ved hjelp av tr
Kommandoene som vises i denne artikkelen ble utført i Ubuntu 20.04 Focal Fossa. De samme kommandoene kan også utføres på andre Linux-distribusjoner som har verktøyene ovenfor tilgjengelig. Vi bruker standard Terminal-applikasjon til å kjøre kommandoene. Du kan få tilgang til Terminal-applikasjonen ved å bruke hurtigtasten Ctrl + Alt + T.
Fjern tegn fra streng ved bruk av sed
Sed er et kraftig og praktisk verktøy som brukes til å redigere tekststrømmer. Det er en ikke-interaktiv tekstredigerer som lar deg utføre grunnleggende tekstmanipuleringer på inngangsstrømmer. Du kan også bruke sed for å fjerne uønskede tegn fra strengene.
For demonstrasjonsformål vil vi bruke en prøvestreng og deretter rør den til sed-kommandoen.
Fjern spesifikk karakter fra streng
Ved hjelp av sed kan du fjerne et bestemt tegn fra en streng. For eksempel for å fjerne “h” fra strengen “Hei, hvordan har du det?”Kommandoen ville være:
$ echo "hallo, hvordan har du det?"| sed 's / h //'Dette fjerner bare den første forekomsten av 'h' i strengen.
For å fjerne alle forekomster av 'h' fra strengen, bruk følgende kommando:
Hvor g står for global. Det vil fjerne alle forekomster av 'h' i strengen.
Fjern første tegn fra streng
For å fjerne det første tegnet fra strengen “Hei, hvordan har du det?” kommandoen ville være:
$ echo "hallo, hvordan har du det?"| sed's / ^.// 'filHvor (.) samsvarer med nøyaktig ett tegn og (^) samsvarer med hvilket som helst tegn i begynnelsen av strengen.
Fjern siste tegn fra streng
For å fjerne det siste tegnet fra strengen “Hei, hvordan har du det?” kommandoen ville være:
$ echo "hallo, hvordan har du det?"| sed's /.$ // 'Hvor (.) samsvarer nøyaktig med et enkelt tegn og ($) samsvarer med hvilket som helst tegn på slutten av strengen.
Fjern første og siste tegn fra streng
For å fjerne det første og siste tegnet fra strengen “Hei, hvordan har du det?” kommandoen ville være:
$ echo "hallo, hvordan har du det?"| sed's / ^.//; s /.$ // '
Fjern tegn fra streng ved hjelp av awk
Awk er et kraftig skriptspråk som brukes til mønstermatching, sammen med tekstbehandling. Awk lar deg filtrere og transformere tekst på forskjellige måter. Du kan også bruke awk for å fjerne tegn fra strengene.
For demonstrasjonsformål vil vi bruke en prøvestreng og deretter pipe den til kommandoen awk.
Fjern første tegn fra en streng
For å fjerne det første tegnet fra strengen “Hei, hvordan har du det?” kommandoen ville være:
$ echo "hallo, hvordan har du det?"| awk 'utskriftssubstrat ($ 0, 2)'Hvor ($ 0) er hele målstrengen og (2) er startposisjonen til tegnet. Ovennevnte kommando fjerner det første tegnet, 'h', 'tegnnummer' 1 ', og returnerer målstrengen som begynner med det andre tegnet,' e.'
Fjern de to første tegnene fra strengen
Du kan også fjerne et bestemt antall tegn fra begynnelsen av en streng. For eksempel for å fjerne de to første tegnene fra strengen “Hei, hvordan har du det?” kommandoen ville være:
$ echo "hallo, hvordan har du det?"| awk 'print substr ($ 0, 3)'Ovennevnte kommando fjerner de to første tegnene, 'han' eller tegnnummer '1 og 2', og returnerer målstrengen som begynner med tegnnummeret '3' eller 'l.'
Fjern siste tegn fra streng
For å fjerne det siste tegnet fra “Hei, hvordan har du det?” kommandoen ville være:
$ echo "hallo, hvordan har du det?"| awk 'print substr ($ 0, 1, length ($ 0) -1)'Hvor lengde ($ 0) -1 betyr å trekke fra '1'fra den totale tegnlengden.
Kommandoen ovenfor vil skrive ut strengen som begynner med tegnnummer '1' opp til lengde ($ 0) -1 for å fjerne den siste karakteren.
Det er '19'tegn (inkludert mellomrom) i strengen ovenfor. Kommandoen fungerer ved å skrive ut alle tegn, startende med tegn '1'og opp til karakter'18,'mens du fjerner det siste tegnet'19.'
Fjern de to siste tegnene fra streng
For å fjerne de to siste tegnene fra “Hei, hvordan har du det?”Kommandoen ville være:
$ echo "hallo, hvordan har du det?"| awk 'utskriftssubstrat ($ 0, 1, lengde ($ 0) -2)'Hvor lengde ($ 0) -2 betyr å trekke fra '2'fra den totale tegnlengden.
Kommandoen ovenfor vil skrive ut strengen, begynnende med tegnnummer '1'og opp til tegnnummer'lengde ($ 0) -2,'for å fjerne de to siste tegnene i strengen.
Fjern både første og siste tegn fra streng
For å fjerne både første og siste tegn fra strengen “Hei, hvordan har du det?” kommandoen ville være:
$ echo "hallo, hvordan har du det?"| awk 'utskriftssubstrat ($ 0, 2, lengde ($ 0) - 2)'Hvor lengde ($ 0) -2 betyr å trekke fra '2'fra den totale tegnlengden.
Kommandoen ovenfor vil skrive ut strengen, begynnende med tegnnummer '2'opp til karakternummer'lengde ($ 0) -2,'for å fjerne det første og siste tegnet.
Fjern tegnet fra strengen ved hjelp av kuttet
Cut er et kommandolinjeverktøy som ofte brukes til å trekke ut en del tekst fra en streng eller fil og skrive ut resultatet til en standard utgang. Du kan også bruke denne kommandoen for å fjerne tegn fra en streng.
For demonstrasjonsformål vil vi bruke en prøvestreng og deretter rør den til klippekommandoen.
Fjern første tegn fra streng
For å fjerne det første tegnet fra strengen, “Hei, hvordan har du det?” kommandoen ville være:
$ echo "hallo, hvordan har du det?"| klipp -c 2-Denne kommandoen skriver ut strengen, begynner med det andre tegnet, mens det første tegnet fjernes.
Fjern de første fire tegnene fra streng
For å fjerne de fire første tegnene fra strengen “Hei, hvordan har du det?” kommandoen ville være:
$ echo "hallo, hvordan har du det?"| klipp -c 5-Denne kommandoen vil skrive ut strengen, fra det femte tegnet, mens de fire første tegnene fjernes.
Skriv ut streng mellom 2. og 5. tegn
Å skrive ut strengen “Hei, hvordan har du det?” mellom andre og femte tegn, kommandoen ville være:
$ echo "hallo, hvordan har du det?"| kutt -c 2-5Denne kommandoen skriver ut strengen, begynner fra det andre tegnet og opp til det femte tegnet, mens du fjerner de gjenværende begynnende og slutttegnene.
Fjern siste tegn fra streng
For å fjerne det siste tegnet fra strengen “Hei, hvordan har du det?” bruke kutte opp kommando med rev, som følger:
$ echo "hallo, hvordan har du det?"| rev | klipp -c2- | revDenne kommandoen fungerer ved først å snu strengen, deretter klippe det første tegnet og til slutt snu den igjen for å gi deg ønsket utgang.
Fjern de siste fire tegnene fra streng
For å fjerne de fire siste tegnene fra linjen “Hei, hvordan har du det?” kommandoen ville være:
$ echo "hallo, hvordan har du det?"| rev | klipp -c5- | revDenne kommandoen fungerer ved først å snu strengen, deretter klippe de fire første tegnene, og deretter reversere den igjen for å gi deg ønsket utgang.
Fjern første og siste tegn fra streng
For å fjerne de første og siste tegnene fra strengen “Hei, hvordan har du det?” bruke kutte opp kommando med rev, som følger:
$ echo "hei verden!"| klipp -c2- | rev | klipp -c2- | revDenne kommandoen fungerer ved å klippe det første tegnet, deretter reversere strengen og klippe det første tegnet, og deretter reversere den igjen for å gi deg ønsket utgang.
Fjern tegn fra streng ved hjelp av tr
Tr-kommandoen (forkortelse for translate) brukes til å oversette, klemme og slette tegn fra en streng. Du kan også bruke tr til å fjerne tegn fra en streng.
For demonstrasjonsformål vil vi bruke en prøvestreng og deretter rør den til tr-kommandoen.
Fjern alle forekomster av karakter
Ved hjelp av tr-kommandoen kan du fjerne alle forekomster av små eller store bokstaver fra strengen. For eksempel, for å fjerne alle forekomster av små bokstaver 'h' fra strengen, vil kommandoen være:
$ echo "Hei, hvordan har du det?"| tr -d h
På samme måte, for å fjerne alle forekomster av store bokstaver 'H' fra strengen, vil kommandoen være:
$ echo "Hei, hvordan har du det?"| tr -d HDu kan også bruke tolket sekvens for å fjerne små eller store bokstaver:
$ echo "Hei, hvordan har du det?"| tr -d [: øvre:]$ echo "HELLO, hvordan har du det?"| tr -d [: lavere:]
Fjern alle forekomster av små og store bokstaver
Du kan også fjerne alle forekomster av både små og store bokstaver fra en streng. For eksempel vil følgende kommando fjerne alle forekomster av tegnet 'h', både små og store bokstaver.
$ echo "Hei, hvordan har du det?"| tr -d 'hH'
Fjern alle forekomster av tegn i et bestemt område
For å fjerne alle forekomster av tegn fra en streng i det spesifikke området 'd-h', vil kommandoen være:
$ echo "hallo, hvordan har du det?"| tr -d 'd-h'Denne kommandoen vil fjerne alle tegn i området 'd-h' (d, e, f, g, h) i strengen.
Konklusjon
I Linux vil det alltid være mer enn én måte å oppnå en enkel jobb på. Det samme gjelder når du fjerner tegn fra en streng. Denne artikkelen viste deg fire forskjellige måter å gjøre det på, sammen med noen få eksempler for å fjerne uønskede tegn fra en streng. Å bestemme hvilket verktøy du vil bruke, avhenger av dine preferanser og, enda viktigere, av hva du vil oppnå.