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