Tekens verwijderen uit String in Bash

Removing Characters From String Bash



Soms moet u tekens uit een tekenreeks verwijderen. Wat de reden ook is, Linux biedt je verschillende ingebouwde, handige tools waarmee je karakters uit een string in Bash kunt verwijderen. In dit artikel wordt uitgelegd hoe u deze hulpmiddelen kunt gebruiken om tekens uit een tekenreeks te verwijderen.

In het artikel wordt beschreven hoe u het volgende kunt doen:







  • Teken uit string verwijderen met sed
  • Teken uit string verwijderen met awk
  • Teken uit tekenreeks verwijderen met knippen
  • Teken uit string verwijderen met tr

De opdrachten die in dit artikel worden getoond, zijn uitgevoerd in Ubuntu 20.04 Focal Fossa. Dezelfde commando's kunnen ook worden uitgevoerd op andere Linux-distributies die de bovenstaande tools beschikbaar hebben. We zullen de standaard Terminal-toepassing gebruiken om de opdrachten uit te voeren. U kunt de Terminal-toepassing openen met de sneltoets Ctrl+Alt+T.



Tekens uit string verwijderen met sed

Sed is een krachtig en handig hulpprogramma dat wordt gebruikt voor het bewerken van tekststromen. Het is een niet-interactieve teksteditor waarmee u basistekstmanipulaties op invoerstromen kunt uitvoeren. U kunt sed ook gebruiken om ongewenste tekens uit tekenreeksen te verwijderen.



Voor demonstratiedoeleinden zullen we een voorbeeldreeks gebruiken en deze vervolgens naar het sed-commando sturen.





Specifiek karakter uit string verwijderen

Met sed kun je een specifiek teken uit een string verwijderen. Om bijvoorbeeld h uit de tekenreeks te verwijderen Hallo hoe gaat het? het commando zou zijn:

$gooide uit 'Hallo hoe gaat het?' | sed 'NS//'

Hiermee wordt alleen het eerste voorkomen van 'h' in de tekenreeks verwijderd.
Specifiek karakter verwijderen uit String1
Gebruik de volgende opdracht om alle exemplaren van 'h' uit de tekenreeks te verwijderen:



$gooide uit 'Hallo hoe gaat het?' | sed 's/u//g'

Waar G staat voor globaal. Het verwijdert alle exemplaren van 'h' in de tekenreeks.
Specifiek karakter verwijderen uit String2

Eerste teken uit string verwijderen

Het eerste teken uit de tekenreeks verwijderen Hallo hoe gaat het? het commando zou zijn:

$gooide uit 'Hallo hoe gaat het?' | sed 's/^.//' het dossier

Waarbij (.) exact overeenkomt met een enkel teken en (^) overeenkomt met elk teken aan het begin van de tekenreeks.
Eerste teken uit string verwijderen

Laatste teken uit string verwijderen

Het laatste teken uit de tekenreeks verwijderen Hallo hoe gaat het? het commando zou zijn:

$gooide uit 'Hallo hoe gaat het?' | sed 's/.$//'

Waar ( . ) komt exact overeen met een enkel teken en ($) komt overeen met elk teken aan het einde van de tekenreeks.
Laatste teken uit string verwijderen

Eerste en laatste teken uit String verwijderen

Het eerste en laatste teken uit de tekenreeks verwijderen Hallo hoe gaat het? het commando zou zijn:

$gooide uit 'Hallo hoe gaat het?' | sed 's /^.//; s /.$//'

Eerste en laatste teken uit String verwijderen

Tekens uit String verwijderen met awk

Awk is een krachtige scripttaal die wordt gebruikt voor het matchen van patronen, samen met tekstverwerking. Met Awk kun je tekst op verschillende manieren filteren en transformeren. U kunt awk ook gebruiken om tekens uit tekenreeksen te verwijderen.

Voor demonstratiedoeleinden zullen we een voorbeeldreeks gebruiken en deze vervolgens naar het awk-commando sturen.

Eerste teken uit een tekenreeks verwijderen

Het eerste teken uit de tekenreeks verwijderen Hallo hoe gaat het? het commando zou zijn:

$gooide uit 'Hallo hoe gaat het?' | awk '{ print substr( $0, 2 ) }'

Waar ($0) de hele doelreeks is en (2) de startpositie van het teken is. De bovenstaande opdracht verwijdert het eerste teken, 'h', tekennummer '1,' en retourneert de doelreeks die begint met het tweede teken, 'e'.
Eerste teken uit een tekenreeks verwijderen

Verwijder de eerste twee tekens uit String

U kunt ook een bepaald aantal tekens aan het begin van een tekenreeks verwijderen. Als u bijvoorbeeld de eerste twee tekens uit de tekenreeks wilt verwijderen: Hallo hoe gaat het? het commando zou zijn:

$gooide uit 'Hallo hoe gaat het?' | awk '{ print substr ($0, 3 ) }'

Met de bovenstaande opdracht worden de eerste twee tekens, 'hij' of tekennummers '1 en 2' verwijderd en wordt de doelreeks geretourneerd die begint met tekennummer '3' of 'l'.
Verwijder de eerste twee tekens uit String

Laatste teken uit string verwijderen

Om het laatste teken te verwijderen uit Hallo hoe gaat het? het commando zou zijn:

$gooide uit 'Hallo hoe gaat het?' | awk '{ print substr( $0, 1, lengte($0)-1 ) }'

Waar lengte($0)-1 betekent aftrekken ‘ 1 ’ van de totale tekenlengte.

De bovenstaande opdracht drukt de tekenreeks af die begint met tekennummer ' 1 ' tot lengte($0)-1 om het laatste teken te verwijderen.

Er zijn ' 19 ’ tekens (inclusief spaties) in de bovenstaande tekenreeks. De opdracht werkt door alle tekens af te drukken, te beginnen met teken ' 1 ’ en tot karakter ‘ 18 ,' terwijl het laatste teken wordt verwijderd ' 19 .'

rmv laatste char frm string

Laatste twee tekens uit String verwijderen

Om de laatste twee tekens te verwijderen uit: Hallo hoe gaat het? het commando zou zijn:

$gooide uit 'Hallo hoe gaat het?' | awk '{ print substr( $0, 1, lengte($0)-2) }'

Waar lengte($0)-2 betekent aftrekken ‘ 2 ’ van de totale tekenlengte.

De bovenstaande opdracht drukt de tekenreeks af, beginnend met tekennummer ' 1 ’ en tot tekennummer ‘ lengte($0)-2 ,' om de laatste twee tekens in de tekenreeks te verwijderen.
Laatste twee tekens uit String verwijderen

Verwijder zowel het eerste als het laatste teken uit String

Om zowel de eerste als de laatste tekens uit de tekenreeks te verwijderen Hallo hoe gaat het? het commando zou zijn:

$gooide uit 'Hallo hoe gaat het?' | awk '{print substr($0, 2, lengte($0) - 2)}'

Waar lengte($0)-2 betekent aftrekken ‘ 2 ’ van de totale tekenlengte.

De bovenstaande opdracht drukt de tekenreeks af, beginnend met tekennummer ' 2 ’ tot tekennummer ‘ lengte($0)-2 ,' om het eerste en laatste teken te verwijderen.

Verwijder zowel het eerste als het laatste teken uit String

Teken uit tekenreeks verwijderen met knippen

Knippen is een opdrachtregelprogramma dat vaak wordt gebruikt om een ​​deel van de tekst uit een tekenreeks of bestand te extraheren en het resultaat af te drukken naar een standaarduitvoer. U kunt deze opdracht ook gebruiken om tekens uit een tekenreeks te verwijderen.

Voor demonstratiedoeleinden zullen we een voorbeeldreeks gebruiken en deze vervolgens naar het cut-commando sturen.

Eerste teken uit string verwijderen

Om het eerste teken uit de tekenreeks te verwijderen, Hallo hoe gaat het? het commando zou zijn:

$gooide uit 'Hallo hoe gaat het?' | snee -C 2-

Met deze opdracht wordt de tekenreeks afgedrukt, beginnend met het tweede teken, terwijl het eerste teken wordt verwijderd.
rmv cut -c

Verwijder de eerste vier tekens uit String

De eerste vier tekens uit de tekenreeks verwijderen Hallo hoe gaat het? het commando zou zijn:

$gooide uit 'Hallo hoe gaat het?' | snee -C 5-

Met deze opdracht wordt de tekenreeks afgedrukt, beginnend bij het vijfde teken, terwijl de eerste vier tekens worden verwijderd.
Verwijder de eerste vier tekens uit String

Tekenreeks tussen 2e en 5e karakters afdrukken

De tekenreeks afdrukken: Hallo hoe gaat het? tussen het tweede en vijfde karakter , het commando zou zijn:

$gooide uit 'Hallo hoe gaat het?' | snee -C 2-5

Met deze opdracht wordt de tekenreeks afgedrukt, beginnend bij het tweede teken en tot het vijfde teken, terwijl de resterende begin- en eindtekens worden verwijderd.
rmv 2e en 5e c2

Laatste teken uit string verwijderen

Het laatste teken uit de tekenreeks verwijderen Hallo hoe gaat het? gebruik de snee commando met rev , als volgt:

$gooide uit 'Hallo hoe gaat het?' | rev | snee -c2- | rev

Deze opdracht werkt door eerst de tekenreeks om te draaien, vervolgens het eerste teken af ​​te knippen en ten slotte weer om te keren om u de gewenste uitvoer te geven.
02Laatste karakter uit String verwijderen

Laatste vier tekens uit String verwijderen

Om de laatste vier tekens van de regel te verwijderen Hallo hoe gaat het? het commando zou zijn:

$gooide uit 'Hallo hoe gaat het?' | rev | snee -c5- | rev

Deze opdracht werkt door eerst de tekenreeks om te draaien, vervolgens de eerste vier tekens af te knippen en vervolgens weer om te keren om u de gewenste uitvoer te geven.
rmv laatste vier tekens

Eerste en laatste tekens uit String verwijderen

De eerste en laatste tekens uit de tekenreeks verwijderen Hallo hoe gaat het? gebruik de snee commando met rev , als volgt:

$gooide uit 'Hallo Wereld!' | snee -c2- | rev | snee -c2- |rev

Deze opdracht werkt door het eerste teken te knippen, vervolgens de tekenreeks om te keren en het eerste teken te knippen, en dan weer om te keren om u de gewenste uitvoer te geven.
rmv eerste en laatste

Teken uit string verwijderen met tr

Het tr-commando (afkorting van translate) wordt gebruikt om tekens uit een tekenreeks te vertalen, te persen en te verwijderen. U kunt tr ook gebruiken om tekens uit een tekenreeks te verwijderen.

Voor demonstratiedoeleinden zullen we een voorbeeldreeks gebruiken en deze vervolgens naar het tr-commando sturen.

Alle voorkomen van karakter verwijderen

Met de opdracht tr kunt u alle voorkomen van kleine letters of hoofdletters uit uw tekenreeks verwijderen. Om bijvoorbeeld alle exemplaren van de kleine letter 'h' uit de tekenreeks te verwijderen, zou de opdracht zijn:

$gooide uit 'Hallo hoe gaat het?' | NS -NSH

verwijder alle gebeurtenissen 01

Evenzo, om alle exemplaren van de hoofdletter 'H' uit de tekenreeks te verwijderen, zou de opdracht zijn:

$gooide uit 'Hallo hoe gaat het?' | NS -NSH

U kunt ook geïnterpreteerde reeksen gebruiken om kleine letters of hoofdletters te verwijderen:

$gooide uit 'Hallo hoe gaat het?'| NS -NS [:bovenste:]

voorvallen lager

$gooide uit 'Hallo hoe gaat het?'| NS -NS [:lager:]

voorvallen bovenste

Alle voorkomen van kleine letters en hoofdletters verwijderen

U kunt ook alle voorkomens van zowel kleine letters als hoofdletters uit een string verwijderen. De volgende opdracht verwijdert bijvoorbeeld alle exemplaren van het teken 'h', zowel kleine letters als hoofdletters.

$gooide uit 'Hallo hoe gaat het?' | NS -NS'hH'

voorvallen boven en onder

Alle voorkomen van tekens in een specifiek bereik verwijderen

Om alle voorkomens van tekens uit een tekenreeks in het specifieke bereik 'd-h' te verwijderen, zou de opdracht zijn:

$gooide uit 'Hallo hoe gaat het?' | NS -NS 'd-h'

Deze opdracht verwijdert alle tekens in het bereik 'd-h' (d,e,f,g,h) in de tekenreeks.
voorvallen specifiek bereik

Conclusie

In Linux zal er altijd meer dan één manier zijn om een ​​eenvoudige klus te klaren. Hetzelfde geldt voor het verwijderen van tekens uit een string. Dit artikel liet je vier verschillende manieren zien om dit te doen, samen met een paar voorbeelden voor het verwijderen van ongewenste tekens uit een string. Welke tool u gaat gebruiken, hangt af van uw voorkeuren en, belangrijker nog, van wat u wilt bereiken.