Відповідь SiegeX краще для конкретного випадку, але ви також повинні знати, як передавати довільний текст sed
.
sed
очікує, що параметри файлів мають свою другу, третю, і т.д. Отже, якщо у вас є текст, який ви хочете обробити, який не є у файлі, вам доведеться передати його sed
. Найпростіший спосіб:
echo "blah blah" | sed 's/blah/blam/g'
Тож ваш приклад став би:
LAT=$(echo "$LATLNG" | sed 's/(\(.*\),\(.*\))/\1/g')
LON=$(echo "$LATLNG" | sed 's/(\(.*\),\(.*\))/\2/g')
Альтернативні (кращі, але більш незрозумілі) методи
Якщо ви думаєте, що є якийсь шанс, який $LATLNG
може початися з тире, або ви хочете бути педантичним, вам слід скористатися printf
замість echo
:
printf '%s' "$LATLNG" | sed 's/foo/bar/g'
Або "тут документ", але це може бути трохи незручно з конструкцією, яку ви використовуєте:
LAT=$(sed 's/foo/bar/g' <<END
$LATLNG
END
)
Або якщо ви використовуєте bash
і не переживаєте за переносимість, можете використовувати рядок "тут":
sed 's/foo/bar/g' <<< "$LATLNG"