Zamiana dowolnego ciągu tekstowego na inny w skryptach powłoki shell/bash

W poniższym wpisie chciałbym zaprezentować w jaki sposób można zamienić dowolny ciąg tekstowy
w skrypcie sh na inny wybrany przez nas ciąg. Dla przykładu wykorzystamy dwie zmienne:

tekst="To jest zrodlowy tekst"
zmiana="docelowy"

Naszym zadaniem jest wyświetlić ostatecznie tekst: “To jest docelowy tekst

#!/bin/bash

tekst="To jest zrodlowy tekst"
zmiana="docelowy"

echo ${tekst/zrodlowy/$zmiana}

Na ekranie zobaczymy spodziewany efekt: To jest docelowy tekst

Taki skrypt zamieni nam tylko pierwsze wystąpienie ciągu docelowy. W przypadku, gdybyśmy chcieli zamienić więcej wystąpień musimy dodać dodatkowy znak / w poleceniu. Dla przykładu w tekście: To jest zrodlowy tekst chcemy zamienić każde wystąpienie literki o na X. Nasz kod wygląda wtedy następująco:

#!/bin/bash

tekst="To jest zrodlowy tekst"
zmiana="X"

echo ${tekst//o/$zmiana}

W wyniku powyższego skryptu otrzymamy: TX jest zrXdlXwy tekst