Fjerne tegn fra streng i bash

Fjerne tegn fra streng i bash

Noen ganger kan det hende du må fjerne tegn fra en streng. Uansett årsak er det, Linux gir deg forskjellige innebygde, hendige 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 karakter fra strengen ved hjelp av SED
  • Fjern karakter fra strengen ved hjelp av AWK
  • Fjern karakter fra strengen ved hjelp av kutt
  • Fjern karakter fra strengen ved hjelp av TR

Kommandoene vist 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 de ovennevnte verktøyene tilgjengelige. Vi vil bruke standard terminalapplikasjonen for å kjøre kommandoene. Du kan få tilgang til terminalapplikasjonen ved hjelp av CTRL+ALT+T -tastaturet.

Fjern tegn fra strengen ved hjelp 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 tekstmanipulasjoner 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øre den til SED -kommandoen.

Fjern spesifikt tegn fra strengen

Ved hjelp av SED kan du fjerne et spesifikt tegn fra en streng. For eksempel for å fjerne "H" fra strengen "Hei, hvordan har du det?”Kommandoen ville være:

$ ekko "Hei, hvordan har du det?"| sed 's/h //'

Dette vil bare fjerne den første forekomsten av 'H' i strengen.

For å fjerne alle forekomster av 'H' fra strengen, bruk følgende kommando:

$ ekko "Hei, hvordan har du det?"| sed 's/h // g'

Hvor g står for Global. Det vil fjerne alle forekomster av 'H' i strengen.

Fjern det første tegnet fra strengen

For å fjerne det første tegnet fra strengen “Hei, hvordan har du det?” Kommandoen ville være:

$ ekko "Hei, hvordan har du det?"| sed 's/^.// '

Hvor (.) samsvarer nøyaktig med et enkelt tegn og (^) samsvarer med ethvert tegn i begynnelsen av strengen.

Fjern siste tegnet fra strengen

For å fjerne det siste tegnet fra strengen “Hei, hvordan har du det?” Kommandoen ville være:

$ ekko "Hei, hvordan har du det?"| sed 's/.$ // '

Hvor (.) samsvarer nøyaktig med et enkelt tegn og ($) samsvarer med ethvert tegn på slutten av strengen.

Fjern første og siste tegn fra streng

For å fjerne den første og siste tegnet fra strengen “Hei, hvordan har du det?” Kommandoen ville være:

$ ekko "Hei, hvordan har du det?"| sed 's/^.//; s/.$ // '

Fjern tegn fra strengen 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 røre den til AWK -kommandoen.

Fjern det første tegnet fra en streng

For å fjerne det første tegnet fra strengen “Hei, hvordan har du det?” Kommandoen ville være:

$ ekko "Hei, hvordan har du det?"| awk 'print substr ($ 0, 2)'

Hvor ($ 0) er hele målstrengen og (2) er karakterens startposisjon. Kommandoen ovenfor fjerner det første tegnet, 'H,' karakternummer '1,' og returnerer målstrengen som begynner med det andre tegnet, 'e.'

Fjern to første tegn 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:

$ ekko "Hei, hvordan har du det?"| awk 'print substr ($ 0, 3)'

Kommandoen ovenfor vil fjerne de to første tegnene, 'He,' eller karakternumre '1 og 2,' og returnerer målstrengen som begynner med karakternummer '3,' eller 'L.'

Fjern siste tegnet fra strengen

Å fjerne den siste karakteren fra “Hei, hvordan har du det?” Kommandoen ville være:

$ ekko "Hei, hvordan har du det?"| awk 'print substr ($ 0, 1, lengde ($ 0) -1)'

Hvor lengde ($ 0) -1 betyr å trekke '1'Fra den totale karakterlengden.

Kommandoen ovenfor vil skrive ut strengen som begynner med karakternummer '1' opp til lengde ($ 0) -1 å fjerne den siste karakteren.

Det er '19'tegn (inkludert mellomrom) i strengen ovenfor. Kommandoen vil fungere ved å skrive ut alle tegn, starter med karakter '1'Og opp til karakter'18,'Mens du fjerner den siste karakteren'19.'

Fjern de to siste tegnene fra strengen

Å fjerne de to siste karakterene fra “Hei, hvordan har du det?”Kommandoen ville være:

$ ekko "Hei, hvordan har du det?"| awk 'print substr ($ 0, 1, lengde ($ 0) -2)'

Hvor lengde ($ 0) -2 betyr å trekke '2'Fra den totale karakterlengden.

Kommandoen ovenfor vil skrive ut strengen, som begynner med karakternummer '1'Og opp til karakternummer'lengde ($ 0) -2,'For å fjerne de to siste tegnene i strengen.

Fjern både første og siste tegn fra strengen

For å fjerne både den første og siste tegn fra strengen “Hei, hvordan har du det?” Kommandoen ville være:

$ ekko "Hei, hvordan har du det?"| awk 'print substr ($ 0, 2, lengde ($ 0) - 2)'

Hvor lengde ($ 0) -2 betyr å trekke '2'Fra den totale karakterlengden.

Kommandoen ovenfor vil skrive ut strengen, som begynner med karakternummer '2'opp til karakternummer'lengde ($ 0) -2,'For å fjerne den første og siste karakteren.

Fjern karakter fra strengen ved hjelp av kutt

Cut er et kommandolinjeverktøy som vanligvis brukes til å trekke ut en del av teksten fra en streng eller fil og skrive ut resultatet til en standardutgang. Du kan også bruke denne kommandoen for å fjerne tegn fra en streng.

For demonstrasjonsformål vil vi bruke en prøvestreng og deretter røre den til CUT -kommandoen.

Fjern det første tegnet fra strengen

Å fjerne det første tegnet fra strengen, “Hei, hvordan har du det?” Kommandoen ville være:

$ ekko "Hei, hvordan har du det?"| kutt -c 2-

Denne kommandoen vil skrive ut strengen, som begynner med det andre tegnet, mens du fjerner det første tegnet.

Fjern fire første tegn fra strengen

For å fjerne de fire første tegnene fra strengen “Hei, hvordan har du det?” Kommandoen ville være:

$ ekko "Hei, hvordan har du det?"| Kutt -C 5-

Denne kommandoen vil skrive ut strengen, fra det femte tegnet, mens du fjerner de fire første tegnene.

Skriv ut streng mellom 2. og 5. tegn

Å skrive ut strengen “Hei, hvordan har du det?” mellom andre og femte karakterer, Kommandoen ville være:

$ ekko "Hei, hvordan har du det?"| Kutt -C 2-5

Denne kommandoen vil skrive ut strengen, fra det andre tegnet og opp til det femte tegnet, mens du fjerner de gjenværende begynnelses- og sluttkarakterene.

Fjern siste tegnet fra strengen

For å fjerne det siste tegnet fra strengen “Hei, hvordan har du det?” bruke kutte opp kommando med Rev, følgende:

$ ekko "Hei, hvordan har du det?"| Rev | kutt -C2- | Rev

Denne kommandoen fungerer ved først å reversere strengen, deretter kutte det første tegnet og til slutt reversere den igjen for å gi deg ønsket utgang.

Fjern de siste fire tegnene fra strengen

Å fjerne de fire siste karakterene fra linjen “Hei, hvordan har du det?” Kommandoen ville være:

$ ekko "Hei, hvordan har du det?"| Rev | kutt -C5- | Rev

Denne kommandoen fungerer ved først å reversere strengen, deretter kutte de fire første tegnene, og deretter vende 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, følgende:

$ ECHO "Hello World!"| Cut -C2- | Rev | Cut -C2- | Rev

Denne kommandoen fungerer ved å kutte det første tegnet, deretter snu strengen og kutte det første tegnet, og deretter snu den igjen for å gi deg ønsket utgang.

Fjern karakter fra strengen ved hjelp av TR

TR -kommandoen (forkortelse for å oversette) brukes til å oversette, klemme og slette tegn fra en streng. Du kan også bruke TR for å fjerne tegn fra en streng.

For demonstrasjonsformål vil vi bruke en prøvestreng og deretter røre 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 din. For å fjerne alle forekomster av små bokstaver 'H' fra strengen, ville kommandoen være:

$ ekko "Hei, hvordan har du det?"| tr -d h

Tilsvarende, for å fjerne alle forekomster av store bokstaver 'H' fra strengen, ville kommandoen være:

$ ekko "Hei, hvordan har du det?"| tr -d h

Du kan også bruke tolkede sekvenser for å fjerne små bokstaver eller store bokstaver:

$ ekko "Hei, hvordan har du det?"| tr -d [: øvre:]
$ ekko "Hei, 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 karakteren 'H', både små og store bokstaver.

$ ekko "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', ville kommandoen være:

$ ekko "Hei, 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 en måte å oppnå en enkel jobb. Det samme er tilfelle med å fjerne 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 skal bruke alt avhenger av dine preferanser og, enda viktigere, av hva du vil oppnå.