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:
- Fjern tegn fra streng ved hjælp af sed
- Fjern tegn fra streng ved hjælp af awk
- Fjern tegn fra streng ved hjælp af klip
- Fjern tegn fra streng ved hjælp af tr
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:
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 / ^.// 'filHvor (.) 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-5Denne 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- | revDenne 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- | revDenne 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- | revDenne 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 HDu 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å.