La réponse de SiegeX est meilleure pour ce cas particulier, mais vous devez également savoir comment transmettre du texte arbitraire à sed
.
sed
attend les noms de fichiers comme ses deuxième, troisième, etc. paramètres, et s'il ne trouve aucun nom de fichier, il lit à partir de son entrée standard. Donc, si vous avez du texte à traiter qui n'est pas dans un fichier, vous devez le diriger vers sed
. La façon la plus simple est la suivante:
echo "blah blah" | sed 's/blah/blam/g'
Votre exemple deviendrait donc:
LAT=$(echo "$LATLNG" | sed 's/(\(.*\),\(.*\))/\1/g')
LON=$(echo "$LATLNG" | sed 's/(\(.*\),\(.*\))/\2/g')
Méthodes alternatives (meilleures mais plus obscures)
Si vous pensez qu'il y a une chance qui $LATLNG
pourrait commencer par un tiret, ou si vous voulez être pédant, vous devriez utiliser à la printf
place deecho
:
printf '%s' "$LATLNG" | sed 's/foo/bar/g'
Ou un "document ici", mais cela peut être un peu gênant avec la construction que vous utilisez:
LAT=$(sed 's/foo/bar/g' <<END
$LATLNG
END
)
Ou si vous utilisez bash
et ne vous inquiétez pas de la portabilité, vous pouvez utiliser une "chaîne ici":
sed 's/foo/bar/g' <<< "$LATLNG"