Odpowiedź SiegeX jest lepsza w tym konkretnym przypadku, ale powinieneś także wiedzieć, jak przekazać dowolny tekst sed
.
sed
oczekuje nazw plików jako drugiego, trzeciego itd. parametru, a jeśli nie znajdzie żadnych nazw plików, odczyta ze swojego standardowego wejścia. Więc jeśli masz tekst, który chcesz przetworzyć, którego nie ma w pliku, musisz go potokować sed
. Najprostszym sposobem jest to:
echo "blah blah" | sed 's/blah/blam/g'
Zatem twój przykład wyglądałby następująco:
LAT=$(echo "$LATLNG" | sed 's/(\(.*\),\(.*\))/\1/g')
LON=$(echo "$LATLNG" | sed 's/(\(.*\),\(.*\))/\2/g')
Alternatywne (lepsze, ale bardziej niejasne) metody
Jeśli uważasz, że jest jakaś szansa $LATLNG
zacząć od kreski lub jeśli chcesz być pedantyczny, powinieneś użyć printf
zamiast echo
:
printf '%s' "$LATLNG" | sed 's/foo/bar/g'
Lub „tutaj dokument”, ale może to być trochę niezręczne w przypadku używanej konstrukcji:
LAT=$(sed 's/foo/bar/g' <<END
$LATLNG
END
)
Lub jeśli używasz bash
i nie martwisz się o przenośność, możesz użyć ciągu „tutaj”:
sed 's/foo/bar/g' <<< "$LATLNG"