BASH-programmering

Fjernelse af tegn fra streng i bash

Fjernelse af tegn fra streng i bash

Til tider skal du muligvis fjerne tegn fra en streng. Uanset årsagen er, giver Linux dig forskellige indbyggede, praktiske værktøjer, der giver dig mulighed for at fjerne tegn fra en streng i Bash. Denne artikel viser dig, hvordan du bruger disse værktøjer til at fjerne tegn fra en streng.

Artiklen dækker, hvordan man udfører følgende:

Kommandoerne vist i denne artikel blev udført i Ubuntu 20.04 Focal Fossa. De samme kommandoer kan også udføres på andre Linux-distributioner, hvor ovenstående værktøjer er tilgængelige. Vi bruger standardterminalapplikationen til at køre kommandoerne. Du kan få adgang til Terminal-applikationen ved hjælp af tastaturgenvejen Ctrl + Alt + T.

Fjern tegn fra streng ved hjælp af sed

Sed er et kraftfuldt og praktisk værktøj, der bruges til at redigere tekststrømme. Det er en ikke-interaktiv teksteditor, der giver dig mulighed for at udføre grundlæggende tekstmanipulationer på inputstrømme. Du kan også bruge sed til at fjerne uønskede tegn fra strengene.

Til demonstrationsformål bruger vi en prøvestreng og rør den derefter til kommandoen sed.

Fjern specifikt tegn fra streng

Ved hjælp af sed kan du fjerne et bestemt tegn fra en streng. For eksempel at fjerne “h” fra strengen “Hej, hvordan går det?”Kommandoen ville være:

$ echo "hej, hvordan har du det?"| sed 's / h //'

Dette fjerner kun den første forekomst af 'h' i strengen.

For at fjerne alle forekomster af 'h' fra strengen skal du bruge følgende kommando:

$ echo "hej, hvordan har du det?"| sed 's / h // g'

Hvor g står for global. Det fjerner alle forekomster af 'h' i strengen.

Fjern første tegn fra streng

For at fjerne det første tegn fra strengen “Hej, hvordan går det?” kommandoen ville være:

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

Hvor (.) matcher nøjagtigt et enkelt tegn og (^) matcher ethvert tegn i begyndelsen af ​​strengen.

Fjern sidste tegn fra streng

For at fjerne det sidste tegn fra strengen “Hej, hvordan går det?” kommandoen ville være:

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

Hvor (.) matcher nøjagtigt et enkelt tegn og ($) matcher ethvert tegn i slutningen af ​​strengen.

Fjern første og sidste tegn fra streng

For at fjerne det første og sidste tegn fra strengen “Hej, hvordan går det?” kommandoen ville være:

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

Fjern tegn fra streng ved hjælp af awk

Awk er et stærkt script-sprog, der bruges til mønstermatchning sammen med tekstbehandling. Awk giver dig mulighed for at filtrere og transformere tekst på forskellige måder. Du kan også bruge awk til at fjerne tegn fra strenge.

Til demonstrationsformål bruger vi en prøvestreng og rør den derefter til kommandoen awk.

Fjern første tegn fra en streng

For at fjerne det første tegn fra strengen “Hej, hvordan går det?” kommandoen ville være:

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

Hvor ($ 0) er hele målstrengen, og (2) er karakterens startposition. Ovenstående kommando fjerner det første tegn, 'h', 'tegnnummer' 1 ', og returnerer målstrengen, der begynder med det andet tegn,' e.''

Fjern de første to tegn fra streng

Du kan også fjerne et bestemt antal tegn fra begyndelsen af ​​en streng. For eksempel at fjerne de to første tegn fra strengen “Hej, hvordan går det?” kommandoen ville være:

$ ekko "hej, hvordan har du det?"| awk 'udskriftssubstrat ($ 0, 3)'

Ovenstående kommando fjerner de to første tegn, 'han' eller tegnnumrene '1 og 2', og returnerer målstrengen, der begynder med tegnnummeret '3' eller 'l.''

Fjern sidste tegn fra streng

For at fjerne det sidste tegn fra “Hej, hvordan går det?” kommandoen ville være:

$ echo "hej, hvordan har du det?"| awk 'print substr ($ 0, 1, længde ($ 0) -1)'

Hvor længde ($ 0) -1 betyder fratrækning '1'fra den samlede tegnlængde.

Ovenstående kommando udskriver strengen, der begynder med tegnnummer '1' op til længde ($ 0) -1 for at fjerne det sidste tegn.

Der er '19'tegn (inklusive mellemrum) i ovenstående streng. Kommandoen fungerer ved at udskrive alle tegn, startende med tegn '1'og op til karakter'18,'mens du fjerner det sidste tegn'19.''

Fjern de sidste to tegn fra streng

For at fjerne de to sidste tegn fra “Hej, hvordan går det?”Kommandoen ville være:

$ ekko "hej, hvordan har du det?"| awk 'udskriftssubstrat ($ 0, 1, længde ($ 0) -2)'

Hvor længde ($ 0) -2 betyder fratrækning '2'fra den samlede tegnlængde.

Ovenstående kommando udskriver strengen begyndende med tegnnummer '1'og op til tegn nummer'længde ($ 0) -2,'for at fjerne de sidste to tegn i strengen.

Fjern både første og sidste tegn fra streng

For at fjerne både det første og det sidste tegn fra strengen “Hej, hvordan går det?” kommandoen ville være:

$ echo "hej, hvordan har du det?"| awk 'print substr ($ 0, 2, længde ($ 0) - 2)'

Hvor længde ($ 0) -2 betyder fratrækning '2'fra den samlede tegnlængde.

Ovenstående kommando udskriver strengen begyndende med tegnnummer '2'op til tegn nummer'længde ($ 0) -2,'for at fjerne det første og sidste tegn.

Fjern tegn fra streng ved hjælp af snit

Klip er et kommandolinjeværktøj, der ofte bruges til at udtrække en del tekst fra en streng eller fil og udskrive resultatet til en standardoutput. Du kan også bruge denne kommando til at fjerne tegn fra en streng.

Til demonstrationsformål bruger vi en prøvestreng og rør den derefter til cut-kommandoen.

Fjern første tegn fra streng

For at fjerne det første tegn fra strengen, “Hej, hvordan går det?” kommandoen ville være:

$ echo "hej, hvordan har du det?"| klip -c 2-

Denne kommando udskriver strengen, der begynder med det andet tegn, mens det første tegn fjernes.

Fjern de første fire tegn fra streng

For at fjerne de første fire tegn fra strengen “Hej, hvordan går det?” kommandoen ville være:

$ echo "hej, hvordan har du det?"| klip -c 5-

Denne kommando udskriver strengen fra det femte tegn, mens de første fire tegn fjernes.

Udskriv streng mellem 2. og 5. tegn

Sådan udskrives strengen “Hej, hvordan går det?” mellem andet og femte tegn, kommandoen ville være:

$ echo "hej, hvordan har du det?"| klip -c 2-5

Denne kommando udskriver strengen, begyndende fra det andet tegn og op til det femte tegn, mens de resterende begyndelses- og sluttegn fjernes.

Fjern sidste tegn fra streng

For at fjerne det sidste tegn fra strengen “Hej, hvordan går det?” brug skære kommando med rev, som følger:

$ echo "hej, hvordan har du det?"| rev | klip -c2- | rev

Denne kommando fungerer ved først at vende strengen, derefter klippe det første tegn og til sidst vende det igen for at give dig det ønskede output.

Fjern de sidste fire tegn fra streng

For at fjerne de sidste fire tegn fra linjen “Hej, hvordan går det?” kommandoen ville være:

$ echo "hej, hvordan har du det?"| rev | klip -c5- | rev

Denne kommando fungerer ved først at vende strengen, derefter skære de første fire tegn og derefter vende den igen for at give dig den ønskede output.

Fjern første og sidste tegn fra streng

For at fjerne de første og sidste tegn fra strengen “Hej, hvordan går det?” brug skære kommando med rev, som følger:

$ echo "hej verden!"| klip -c2- | rev | klip -c2- | rev

Denne kommando fungerer ved at klippe det første tegn, derefter vende strengen og klippe dens første tegn og derefter vende den igen for at give dig den ønskede output.

Fjern tegn fra streng ved hjælp af tr

Tr-kommandoen (forkortelse for translate) bruges til at oversætte, klemme og slette tegn fra en streng. Du kan også bruge tr til at fjerne tegn fra en streng.

Til demonstrationsformål bruger vi en prøvestreng og rør den derefter til tr-kommandoen.

Fjern alle forekomster af karakter

Ved hjælp af tr-kommandoen kan du fjerne alle forekomster af små eller store bogstaver fra din streng. For eksempel for at fjerne alle forekomster af små bogstaver 'h' fra strengen, ville kommandoen være:

$ echo "Hej, hvordan har du det??"| tr -d h

På samme måde vil kommandoen være for at fjerne alle forekomster af det store bogstav 'H' fra strengen:

$ echo "Hej, hvordan har du det??"| tr -d H

Du kan også bruge fortolkede sekvenser til at fjerne små eller store bogstaver:

$ echo "Hej, hvordan har du det??"| tr -d [: øvre:]

$ echo "HELLO, hvordan har du det??"| tr -d [: lavere:]

Fjern alle forekomster af små og store bogstaver

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

$ echo "Hej, hvordan har du det??"| tr -d 'hH'

Fjern alle forekomster af tegn i et specifikt interval

For at fjerne alle forekomster af tegn fra en streng i det specifikke interval 'd-h' ville kommandoen være:

$ echo "hej, hvordan har du det?"| tr -d 'd-h'

Denne kommando fjerner alle tegn i området 'd-h' (d, e, f, g, h) i strengen.

Konklusion

I Linux vil der altid være mere end en måde at udføre et simpelt job på. Det samme gælder for at fjerne tegn fra en streng. Denne artikel viste dig fire forskellige måder at gøre det sammen med et par eksempler til fjernelse af uønskede tegn fra en streng. At beslutte hvilket værktøj der skal bruges afhænger af dine præferencer og vigtigere af hvad du vil opnå.

Sådan bruges GameConqueror Cheat Engine i Linux
Artiklen dækker en vejledning om brug af GameConqueror-snydemotoren i Linux. Mange brugere, der spiller spil på Windows, bruger ofte "Cheat Engine" -a...
Bedste spilkonsolemulatorer til Linux
Denne artikel viser en liste over populære spilkonsolemuleringssoftware, der er tilgængelig til Linux. Emulation er et softwarekompatibilitetslag, der...
Bedste Linux Distros til spil i 2021
Linux-operativsystemet er kommet langt fra dets originale, enkle, serverbaserede udseende. Dette operativsystem er forbedret enormt i de senere år og ...