Fjerne tegn fra String in Bash

Removing Characters From String Bash



Noen ganger må du kanskje fjerne tegn fra en streng. Uansett årsak, 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 med sed
  • Fjern tegnet fra strengen ved hjelp av awk
  • Fjern tegnet fra strengen ved å bruke kutt
  • Fjern tegnet fra strengen ved å bruke 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 verktøyene ovenfor tilgjengelig. Vi bruker standard Terminal -programmet til å kjøre kommandoene. Du får tilgang til Terminal -applikasjonen ved hjelp av hurtigtasten Ctrl+Alt+T.



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å inndatastrømmer. Du kan også bruke sed til å fjerne uønskede tegn fra strenger.



For demonstrasjonsformål bruker vi en prøvestreng og deretter rør den til sed -kommandoen.





Fjern spesifikk karakter fra strengen

Ved å bruke 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:

$kastet ut 'Hei, hvordan har du det?' | sed 's/h //'

Dette vil bare fjerne den første forekomsten av ‘h’ i strengen.
Fjern spesifikk karakter fra strengen 1
For å fjerne alle forekomster av ‘h’ fra strengen, bruk følgende kommando:



$kastet ut '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 spesifikk karakter fra streng 2

Fjern første tegn fra strengen

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

$kastet ut 'Hei, hvordan har du det?' | sed 's /^.//' fil

Hvor (.) Samsvarer nøyaktig med et enkelt tegn og (^) matcher et hvilket som helst tegn i begynnelsen av strengen.
Fjern første tegn fra strengen

Fjern siste tegn fra strengen

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

$kastet ut 'Hei, hvordan har du det?' | sed 's /.$//'

Hvor ( . ) samsvarer nøyaktig med et enkelt tegn og ($) matcher et hvilket som helst tegn på slutten av strengen.
Fjern siste tegn fra strengen

Fjern første og siste tegn fra strengen

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

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

Fjern første og siste tegn fra strengen

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 til å fjerne tegn fra strenger.

For demonstrasjonsformål bruker vi en prøvestreng og deretter rør 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:

$kastet ut 'Hei, hvordan har du det?' | awk '{print sub ($ 0, 2)}'

Hvor ($ 0) er hele målstrengen og (2) er tegnets startposisjon. Kommandoen ovenfor fjerner det første tegnet, 'h', tegnnummer '1', og returnerer målstrengen som begynner med det andre tegnet, 'e.'
Fjern første tegn fra en streng

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:

$kastet ut 'Hei, hvordan har du det?' | awk '{print sub ($ 0, 3)}'

Kommandoen ovenfor vil fjerne de to første tegnene, 'han' eller tegnnumrene '1 og 2', og returnere målstrengen som begynner med tegnnummeret '3' eller 'l'.
Fjern de to første tegnene fra strengen

Fjern siste tegn fra strengen

For å fjerne det siste tegnet fra Hei, hvordan har du det? kommandoen ville være:

$kastet ut 'Hei, hvordan har du det?' | awk '{utskriftsunderlag ($ 0, 1, lengde ($ 0) -1)}'

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

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 tegnene, og begynner med tegnet ' 1 'Og opp til karakteren' 18 , 'Mens du fjerner det siste tegnet' 19 . ’

rmv siste røyke frm streng

Fjern de to siste tegnene fra strengen

For å fjerne de to siste tegnene fra Hei, hvordan har du det? kommandoen ville være:

$kastet ut 'Hei, hvordan har du det?' | awk '{utskriftssubstrat ($ 0, 1, lengde ($ 0) -2)}'

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

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

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

For å fjerne både det første og det siste tegnet fra strengen Hei, hvordan har du det? kommandoen ville være:

$kastet ut 'Hei, hvordan har du det?' | awk '{utskriftsunderlag ($ 0, 2, lengde ($ 0) - 2)}'

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

Kommandoen ovenfor vil skrive ut strengen, som begynner med tegnnummer ' 2 'Opp til tegnnummer' lengde ($ 0) -2 , ’For å fjerne det første og siste tegnet.

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

Fjern tegn fra strengen ved hjelp av kutt

Cut er et kommandolinjeverktøy som vanligvis 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 til å fjerne tegn fra en streng.

For demonstrasjonsformål bruker vi en prøvestreng og deretter rør den til cut -kommandoen.

Fjern første tegn fra strengen

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

$kastet ut 'Hei, hvordan har du det?' | skjære -c 2-

Denne kommandoen vil skrive ut strengen, som begynner med det andre tegnet, mens det første tegnet fjernes.
rmv kutt -c

Fjern de fire første tegnene fra strengen

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

$kastet ut 'Hei, hvordan har du det?' | skjære -c 5-

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

Skrivestreng mellom 2. og 5. tegn

For å skrive ut strengen Hei, hvordan har du det? mellom andre og femte tegn , kommandoen ville være:

$kastet ut 'Hei, hvordan har du det?' | skjære -c 2-5

Denne kommandoen vil skrive ut strengen, fra det andre tegnet og opp til det femte tegnet, mens de resterende begynnelses- og slutttegnene fjernes.
rmv 2. og 5. c2

Fjern siste tegn fra strengen

For å fjerne det siste tegnet fra strengen Hei, hvordan har du det? bruke skjære kommando med rev , følgende:

$kastet ut 'Hei, hvordan har du det?' | rev | skjære -c2- | rev

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

Fjern de siste fire tegnene fra strengen

For å fjerne de fire siste tegnene fra linjen Hei, hvordan har du det? kommandoen ville være:

$kastet ut 'Hei, hvordan har du det?' | rev | skjære -c5- | rev

Denne kommandoen fungerer ved først å reversere strengen, deretter kutte de fire første tegnene og deretter reversere den igjen for å gi deg ønsket utgang.
rmv siste fire tegn

Fjern første og siste tegn fra strengen

For å fjerne de første og siste tegnene fra strengen Hei, hvordan har du det? bruke skjære kommando med rev , følgende:

$kastet ut 'Hei Verden!' | skjære -c2- | rev | skjære -c2- |rev

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

Fjern tegn fra strengen ved hjelp av tr

Kommandoen tr (kort 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 bruker vi en prøvestreng og deretter rør den til kommandoen tr.

Fjern alle forekomster av tegn

Ved å bruke kommandoen tr kan du fjerne alle forekomster av små eller store tegn fra strengen din. For eksempel, for å fjerne alle forekomster av små bokstaver ‘h’ fra strengen, vil kommandoen være:

$kastet ut 'Hei, hvordan har du det?' | NS -dh

fjerne alle hendelser 01

På samme måte, for å fjerne alle forekomster av store bokstaver ‘H’ fra strengen, vil kommandoen være:

$kastet ut 'Hei, hvordan har du det?' | NS -dH

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

$kastet ut 'Hei, hvordan har du det?'| NS -d [:øverste:]

forekommer lavere

$kastet ut 'Hei, hvordan har du det?'| NS -d [:Nedre:]

forekommer øvre

Fjern alle forekomster av små og store bokstaver

Du kan også fjerne alle forekomster av både små og store tegn fra en streng. For eksempel vil følgende kommando fjerne alle forekomster av tegnet 'h', både små og store bokstaver.

$kastet ut 'Hei, hvordan har du det?' | NS -d'HH'

forekommer øvre og nedre

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:

$kastet ut 'Hei, hvordan har du det?' | NS -d 'd-h'

Denne kommandoen vil fjerne alle tegn i området 'd-h' (d, e, f, g, h) i strengen.
forekommer spesifikt område

Konklusjon

I Linux vil det alltid være mer enn én måte å utføre 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 skal bruke, avhenger av dine preferanser og, enda viktigere, av hva du vil oppnå.