La variable bash LATLNG contiene un valor de latitud y longitud entre paréntesis
(53.3096,-6.28396)
Quiero analizar estos en una variable llamada LAT y LON que estoy tratando de hacer a través de sed así
LAT=$(sed "s/(\(.*\),\(.*\))/\1/g" "$LATLNG")
LON=$(sed "s/(\(.*\),\(.*\))/\2/g" "$LATLNG")
Sin embargo, me sale el siguiente error:
sed: can't read (53.3096,-6.28396): No such file or directory

bashvariable.Respuestas:
Esto se puede resolver a través de la sintaxis de shell puro. Sin embargo, requiere una variable temporal debido a los paréntesis (paréntesis):
Alternativamente, puedes hacerlo de una vez jugando
IFSy usando elreadbuiltin:fuente
#!/bin/bashLa respuesta de SiegeX es mejor para este caso particular, pero también debe saber cómo pasar texto arbitrario
sed.sedespera 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 canalizarlosed. La forma más directa es esta:Entonces su ejemplo sería:
Métodos alternativos (mejores pero más oscuros)
Si crees que hay alguna posibilidad de que
$LATLNGcomience con un guión, o si quieres ser pedante, debes usar enprintflugar deecho:O un "documento aquí", pero eso puede ser un poco incómodo con la construcción que está utilizando:
O si está usando
bashy no le preocupa la portabilidad, puede usar una "cadena aquí":fuente
Aquí hay una solución que funcionará en cualquier shell POSIX:
Aquí hay otra solución igualmente portátil que analiza la sintaxis específica utilizada.
fuente
fuente
set -- ...Hay una muy buena posibilidad de que el primer personaje sea un-.