Fjernelse af tegn fra String in Bash

Removing Characters From String Bash



Nogle gange skal du muligvis fjerne tegn fra en streng. Uanset hvad å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 du udfører følgende:







  • Fjern tegn fra strengen ved hjælp af sed
  • Fjern tegn fra strengen ved hjælp af awk
  • Fjern tegn fra strengen ved hjælp af klipning
  • Fjern tegn fra strengen 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, der har ovenstående værktøjer til rådighed. Vi vil bruge standardterminalprogrammet til at køre kommandoerne. Du kan få adgang til Terminal -applikationen ved hjælp af tastaturgenvejen Ctrl+Alt+T.



Fjern tegn fra strengen 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 tekstredigerer, 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 strenge.



Til demonstrationsformål vil vi bruge en stikprøve og derefter føre den til sed -kommandoen.





Fjern specifik karakter fra strengen

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:

$smed ud 'Hej, hvordan går det?' | sed 's/h //'

Dette fjerner kun den første forekomst af 'h' i strengen.
Fjern specifik karakter fra streng 1
For at fjerne alle forekomster af 'h' fra strengen skal du bruge følgende kommando:



$smed ud 'Hej, hvordan går det?' | sed 's/h // g'

Hvor g står for global. Det fjerner alle forekomster af 'h' i strengen.
Fjern specifik karakter fra streng 2

Fjern første tegn fra strengen

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

$smed ud 'Hej, hvordan går det?' | sed 's /^.//' fil

Hvor (.) Matcher nøjagtigt et enkelt tegn og (^) matcher ethvert tegn i begyndelsen af ​​strengen.
Fjern første tegn fra strengen

Fjern sidste tegn fra strengen

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

$smed ud 'Hej, hvordan går det?' | sed 's /.$//'

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

Fjern første og sidste tegn fra strengen

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

$smed ud 'Hej, hvordan går det?' | sed 's /^.//; s /.$//'

Fjern første og sidste tegn fra strengen

Fjern tegn fra strengen ved hjælp af awk

Awk er et kraftfuldt scriptsprog, 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 vil vi bruge en stikprøve og derefter føre den 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:

$smed ud 'Hej, hvordan går det?' | awk '{print substr ($ 0, 2)}'

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

Fjern de første to tegn fra strengen

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:

$smed ud 'Hej, hvordan går det?' | awk '{print substr ($ 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 de første to tegn fra strengen

Fjern sidste tegn fra strengen

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

$smed ud 'Hej, hvordan går det?' | awk '{print substr ($ 0, 1, length ($ 0) -1)}'

Hvor længde ($ 0) -1 betyder fradrag af ' 1 'Fra den samlede karakterlæ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 karakteren' 18 , 'Mens du fjerner det sidste tegn' 19 . ’

rmv sidste char frm streng

Fjern de sidste to tegn fra strengen

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

$smed ud 'Hej, hvordan går det?' | awk '{print substr ($ 0, 1, length ($ 0) -2)}'

Hvor længde ($ 0) -2 betyder fradrag af ' 2 'Fra den samlede karakterlængde.

Ovenstående kommando udskriver strengen, der begynder med tegnnummer ' 1 'Og op til tegnnummer' længde ($ 0) -2 , ’For at fjerne de to sidste tegn i strengen.
Fjern de sidste to tegn fra strengen

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

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

$smed ud 'Hej, hvordan går det?' | awk '{print substr ($ 0, 2, length ($ 0) - 2)}'

Hvor længde ($ 0) -2 betyder fradrag af ' 2 'Fra den samlede karakterlængde.

Ovenstående kommando udskriver strengen, der begynder med tegnnummer ' 2 'Op til tegnnummer' længde ($ 0) -2 , ’For at fjerne det første og sidste tegn.

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

Fjern tegn fra strengen ved hjælp af snit

Cut er et kommandolinjeværktøj, der almindeligvis 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 vil vi bruge en stikprøve og derefter føre den til kommandoen cut.

Fjern første tegn fra strengen

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

$smed ud 'Hej, hvordan går det?' | skære -c 2-

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

Fjern de første fire tegn fra strengen

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

$smed ud 'Hej, hvordan går det?' | skære -c 5-

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

Udskriv streng mellem 2. og 5. tegn

For at udskrive strengen Hej, hvordan går det? mellem det andet og det femte tegn , kommandoen ville være:

$smed ud 'Hej, hvordan går det?' | skære -c 2-5

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

Fjern sidste tegn fra strengen

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

$smed ud 'Hej, hvordan går det?' | rev | skære -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.
02 Fjern den sidste karakter fra strengen

Fjern de sidste fire tegn fra strengen

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

$smed ud 'Hej, hvordan går det?' | rev | skære -c5- | rev

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

Fjern første og sidste tegn fra strengen

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

$smed ud 'Hej Verden!' | skære -c2- | rev | skære -c2- |rev

Denne kommando fungerer ved at skære det første tegn, derefter vende strengen og skære dets første tegn og derefter vende det igen for at give dig det ønskede output.
rmv først og sidst

Fjern tegn fra strengen 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.

Af demonstrationsmæssige årsager bruger vi en stikprøve og derefter rør den til tr -kommandoen.

Fjern alle forekomster af karakter

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

$smed ud 'Hej, hvordan går det?' | NS -dh

fjern alle forekomster 01

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

$smed ud 'Hej, hvordan går det?' | NS -dH

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

$smed ud 'Hej, hvordan går det?'| NS -d [:øverst:]

forekommer lavere

$smed ud 'Hej, hvordan går det?'| NS -d [:nederste:]

forekommer øverst

Fjern alle forekomster af små og store bogstaver

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

$smed ud 'Hej, hvordan går det?' | NS -d'HH'

forekommer øvre og nedre

Fjern alle forekomster af tegn i et bestemt område

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

$smed ud 'Hej, hvordan går det?' | NS -d 'd-h'

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

Konklusion

I Linux vil der altid være mere end én måde at udføre et enkelt job på. Det samme er tilfældet med fjernelse af tegn fra en streng. Denne artikel viste dig fire forskellige måder at gøre det på, sammen med et par eksempler til fjernelse af uønskede tegn fra en streng. Beslutningen om hvilket værktøj du skal bruge, afhænger af dine præferencer og, vigtigere af alt, af hvad du vil opnå.