Bash:
Usuwanie znaków pasujących do wzorca
How to: (Jak to zrobić?)
# Przykład 1: Usuń wszystkie wystąpienia litery 'a'
tekst="banana"
echo "${tekst//a/}"
# Wynik: bnn
# Przykład 2: Usuń cyfry z ciągu znaków
tekst="abc123"
echo "${tekst//[0-9]/}"
# Wynik: abc
# Przykład 3: Usuń wszystkie znaki oprócz cyfr
tekst="abc123"
echo "${tekst//[^0-9]/}"
# Wynik: 123
Deep Dive (Wnikliwa analiza)
Bash wykorzystuje wyrażenia regularne (regex), potężne narzędzie, które zapoczątkowano już w latach 50-tych. Za pomocą regex można z łatwością wyszukać, zamienić lub usunąć konkretne znaki czy wzorce.
Alternatywami dla wbudowanych funkcji Bash są zewnętrzne programy jak sed
czy awk
, które oferują jeszcze więcej opcji manipulowania tekstem.
Szczegółowość implementacji zależy od potrzeb. W Bashu można operować na zmiennych tekstowych bezpośrednio w skrypcie, a //
oznacza usunięcie wszystkich wystąpień wzorca, podczas gdy /
usunie tylko pierwsze jego wystąpienie.
See Also (Zobacz także)
man bash
- manual do Bash, sekcja o wyrażeniach regularnych i pattern matching.man sed
- manual do sed, edytor strumieniowy do manipulacji tekstem.man awk
- manual do awk, język programowania przeznaczony do przetwarzania i analizowania danych tekstowych.
Dodatkowo poczytać można na temat wyrażeń regularnych, aby lepiej zrozumieć, jak tworzyć bardziej złożone wzorce:
- RegExr - strona do nauki i testowania wyrażeń regularnych.
- GNU Bash manual - online manual do Bash zawierający informacje o pattern matching.