La risposta di SiegeX è migliore per questo caso particolare, ma dovresti anche sapere come passare un testo arbitrario a sed
.
sed
si aspetta nomi di file come secondo, terzo, ecc. parametri e, se non trova alcun nome di file, legge dal suo input standard. Quindi se hai del testo che vuoi elaborare che non è in un file, devi reindirizzarlo sed
. Il modo più semplice è questo:
echo "blah blah" | sed 's/blah/blam/g'
Quindi il tuo esempio diventerebbe:
LAT=$(echo "$LATLNG" | sed 's/(\(.*\),\(.*\))/\1/g')
LON=$(echo "$LATLNG" | sed 's/(\(.*\),\(.*\))/\2/g')
Metodi alternativi (migliori ma più oscuri)
Se pensi che ci sia qualche possibilità che $LATLNG
possa iniziare con un trattino o se vuoi essere pedante, dovresti usare printf
invece di echo
:
printf '%s' "$LATLNG" | sed 's/foo/bar/g'
O un "documento qui", ma può essere un po 'imbarazzante con il costrutto che stai usando:
LAT=$(sed 's/foo/bar/g' <<END
$LATLNG
END
)
O se stai usando bash
e non sei preoccupato per la portabilità, puoi usare una "stringa qui":
sed 's/foo/bar/g' <<< "$LATLNG"