Die Antwort von SiegeX ist in diesem speziellen Fall besser, Sie sollten jedoch auch wissen, wie Sie beliebigen Text übergeben sed
.
sed
erwartet Dateinamen als zweiten, dritten usw. Parameter, und wenn keine Dateinamen gefunden werden, wird von der Standardeingabe gelesen. Wenn Sie also Text haben, den Sie verarbeiten möchten, der nicht in einer Datei enthalten ist, müssen Sie ihn weiterleiten sed
. Der einfachste Weg ist dieser:
echo "blah blah" | sed 's/blah/blam/g'
So würde Ihr Beispiel werden:
LAT=$(echo "$LATLNG" | sed 's/(\(.*\),\(.*\))/\1/g')
LON=$(echo "$LATLNG" | sed 's/(\(.*\),\(.*\))/\2/g')
Alternative (bessere, aber obskurere) Methoden
Wenn Sie glauben, dass eine Chance besteht, $LATLNG
die mit einem Bindestrich beginnen könnte, oder wenn Sie pedantisch sein möchten, sollten Sie printf
anstelle von Folgendes verwenden echo
:
printf '%s' "$LATLNG" | sed 's/foo/bar/g'
Oder ein "hier Dokument", aber das kann mit dem Konstrukt, das Sie verwenden, etwas umständlich sein:
LAT=$(sed 's/foo/bar/g' <<END
$LATLNG
END
)
Wenn Sie bash
Portabilität nicht befürchten, können Sie auch eine "Here-Zeichenfolge" verwenden:
sed 's/foo/bar/g' <<< "$LATLNG"