A resposta do SiegeX é melhor para este caso em particular, mas você também deve saber como passar texto arbitrário sed
.
sed
espera nomes de arquivos como seu segundo, terceiro, etc. parâmetros e, se não encontrar nenhum nome de arquivo, ele lê sua entrada padrão. Portanto, se você tiver um texto que deseja processar que não esteja em um arquivo, precisará canalizá-lo sed
. A maneira mais direta é esta:
echo "blah blah" | sed 's/blah/blam/g'
Portanto, seu exemplo se tornaria:
LAT=$(echo "$LATLNG" | sed 's/(\(.*\),\(.*\))/\1/g')
LON=$(echo "$LATLNG" | sed 's/(\(.*\),\(.*\))/\2/g')
Métodos alternativos (melhores, porém mais obscuros)
Se você acha que há alguma chance de $LATLNG
começar com um traço, ou se você quer ser pedante, useprintf
vez de echo
:
printf '%s' "$LATLNG" | sed 's/foo/bar/g'
Ou um "documento aqui", mas isso pode ser um pouco estranho com a construção que você está usando:
LAT=$(sed 's/foo/bar/g' <<END
$LATLNG
END
)
Ou, se você estiver usando bash
e não estiver preocupado com a portabilidade, poderá usar uma "string aqui":
sed 's/foo/bar/g' <<< "$LATLNG"