Ответ SiegeX лучше в данном конкретном случае, но вы также должны знать, как передавать произвольный текст sed.
sedожидает имена файлов в качестве второго, третьего и т. д. параметров, и если он не находит никаких имен файлов, он считывает данные из стандартного ввода. Поэтому, если у вас есть текст, который вы хотите обработать, которого нет в файле, вы должны передать его по конвейеру sed. Самый простой способ заключается в следующем:
echo "blah blah" | sed 's/blah/blam/g'
Таким образом, ваш пример станет:
LAT=$(echo "$LATLNG" | sed 's/(\(.*\),\(.*\))/\1/g')
LON=$(echo "$LATLNG" | sed 's/(\(.*\),\(.*\))/\2/g')
Альтернативные (лучше, но более смутные) методы
Если вы думаете, что есть шанс $LATLNGначать с тире, или если вы хотите быть педантичным, вы должны использовать printfвместо echo:
printf '%s' "$LATLNG" | sed 's/foo/bar/g'
Или «здесь документ», но это может быть немного неловко с конструкцией, которую вы используете:
LAT=$(sed 's/foo/bar/g' <<END
$LATLNG
END
)
Или, если вы используете bashи не беспокоитесь о переносимости, вы можете использовать «здесь строка»:
sed 's/foo/bar/g' <<< "$LATLNG"