La respuesta de SiegeX es mejor para este caso particular, pero también debe saber cómo pasar texto arbitrario sed
.
sed
espera nombres de archivo como su segundo, tercer, etc. parámetros, y si no encuentra ningún nombre de archivo, lee de su entrada estándar. Entonces, si tiene texto que desea procesar que no está en un archivo, debe canalizarlo sed
. La forma más directa es esta:
echo "blah blah" | sed 's/blah/blam/g'
Entonces su ejemplo sería:
LAT=$(echo "$LATLNG" | sed 's/(\(.*\),\(.*\))/\1/g')
LON=$(echo "$LATLNG" | sed 's/(\(.*\),\(.*\))/\2/g')
Métodos alternativos (mejores pero más oscuros)
Si crees que hay alguna posibilidad de que $LATLNG
comience con un guión, o si quieres ser pedante, debes usar en printf
lugar de echo
:
printf '%s' "$LATLNG" | sed 's/foo/bar/g'
O un "documento aquí", pero eso puede ser un poco incómodo con la construcción que está utilizando:
LAT=$(sed 's/foo/bar/g' <<END
$LATLNG
END
)
O si está usando bash
y no le preocupa la portabilidad, puede usar una "cadena aquí":
sed 's/foo/bar/g' <<< "$LATLNG"