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