Usuwanie cudzysłowów z ciągu znaków

Bash:
Usuwanie cudzysłowów z ciągu znaków

Jak to zrobić:

Bash oferuje kilka sposobów na usunięcie cudzysłowów z ciągów znaków. Oto kilka szybkich przykładów:

#!/bin/bash

# Korzystając z podmiany w zmiennej, aby usunąć zarówno pojedyncze, jak i podwójne cudzysłowy
STRING="\"Witaj, Świecie!\""
echo ${STRING//\"}

# Korzystając z `tr` do usunięcia cudzysłowów
STRING="'Witaj, Świecie!'"
echo $STRING | tr -d "\'"

# Korzystając z `sed` do usunięcia cudzysłowów
STRING="\"Witaj, Świecie!\""
echo $STRING | sed 's/"//g'

Przykładowe wyniki:

Witaj, Świecie!
Witaj, Świecie!
Witaj, Świecie!

Szczegółowa analiza

Dawno temu, polecenia Unix jak tr i sed były głównymi narzędziami do przetwarzania tekstu. Nadal są używane dziś ze względu na ich elastyczność i moc w obsłudze transformacji tekstu, takich jak usuwanie cudzysłowów. Są one podstawowym elementem w zestawie narzędzi każdego skryptera powłoki.

Bash od tego czasu ewoluował, a substitucja zmiennych dodała kolejną warstwę prostoty do manipulacji ciągami znaków na małą skalę. Oszczędza to konieczności korzystania z zewnętrznych binariów, czyniąc skrypty nieco bardziej efektywnymi.

Choć tr świetnie nadaje się do usuwania znaków, nie radzi sobie z bardziej złożonymi wzorcami. Z kolei sed używa wyrażeń regularnych, więc czasem może być nadmiernym narzędziem i wolniejszym przy prostych operacjach.

Wybór między tymi metodami zależy od konkretnego przypadku. Jeśli musisz usunąć różne rodzaje cudzysłowów i już pracujesz w kontekście skryptu Bash, korzystanie z podmiany zmiennych jest oczywistym wyborem ze względu na jego prostotę. Ale jeśli transformujesz strumienie tekstu lub dane wieloliniowe, tr i sed są twoimi najlepszymi przyjaciółmi.

Zobacz także: