Odpowiedź SiegeX jest lepsza w tym konkretnym przypadku, ale powinieneś także wiedzieć, jak przekazać dowolny tekst sed.
sedoczekuje 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ć printfzamiast 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 bashi nie martwisz się o przenośność, możesz użyć ciągu „tutaj”:
sed 's/foo/bar/g' <<< "$LATLNG"