Karakters verwijderen die overeenkomen met een patroon

Bash:
Karakters verwijderen die overeenkomen met een patroon

Hoe te:

Leidende/afsluitende witruimte verwijderen:

tekst="   Hallo, Wereld!   "
getrimd=$(echo "$tekst" | xargs)
echo "$getrimd"

Output: Hallo, Wereld!

Alle cijfers verwijderen:

tekst="B4sh i5 geweldig!"
opgeschoond=${tekst//[^a-zA-Z ]/}
echo "$opgeschoond"

Output: Bsh i geweldig

Specifieke karakters vervangen:

tekst="Hallo-Wereld!"
opgeschoond=${tekst//-/_}
echo "$opgeschoond"

Output: Hallo_Wereld!

Diepere Duik

In het begin waren tekstverwerkingshulpmiddelen zoals sed en awk de standaard voor stringmanipulatie. Sindsdien heeft Bash patroonherkenning en stringmanipulatie rechtstreeks in de shell zelf ingebouwd, waardoor zijn gebruikers veel kracht krijgen zonder de noodzaak voor externe commando’s.

De ${parameter/patroon/tekenreeks} syntaxis is één benadering waarbij je de eerste overeenkomst van patroon vervangt met tekenreeks. Om alle overeenkomsten te verwijderen, voeg nog een / toe zoals getoond in de bovenstaande voorbeelden.

Alternatieven zijn het gebruiken van klassieke UNIX-hulpmiddelen zoals sed, awk, tr, of meer moderne scripttalen zoals Python of Perl.

Onder de motorkap gebruikt Bash globbing en wildcards voor patroonherkenning, maar wanneer je die ${tekst//patroon/} constructies ziet, heb je te maken met de parameteruitbreiding van Bash—een functie die uiterst handig is voor stringmanipulatie.

Zie Ook