У меня есть приведенный ниже текст в файле
path_tryuio=$path_opt/GMT/$CARGMT_VERSION
Я хочу заменить приведенный выше текст приведенным ниже текстом, используя sed
$path_track/GMT/cayu/station/GMT/$CARGMT_VERSION
Где версия - это переменная.
Как мы можем это сделать?
Поскольку путь содержит косые черты, вы, вероятно, не захотите использовать общий символ /
в качестве разделителя для sed. Здесь вместо использования /
я использую ^
:
$ echo $path_tryuio
/this/is/some_path
$ echo $path_tryuio | sed -e "s^/is^^"
/this/some_path
Также обратите внимание на использование двойных кавычек вместо одинарных — оболочка не раскрывает переменные в одинарных кавычках.
Предполагая, что вы хотите изменить следующее
path_tryuio=$path_opt/GMT/$CARGMT_VERSION
, а не то, что справа от =
, как обычно ожидается, вы можете добиться этого, используя sed
как:
sed -e 's|path_tryuio=$path_opt/\(GMT/$CARGMT_VERSION\)|$path_track/GMT/cayu/station/\1|'
Обратите внимание, что в приведенной выше команде sed у нас есть одинарные кавычки, поэтому переменные $
не будут интерполироваться, а будут литеральными строками.
$
в $path_opt
не будет рассматриваться как конец пространства шаблона, так как после него есть текст.