заменить текст на sed в linux

У меня есть приведенный ниже текст в файле

path_tryuio=$path_opt/GMT/$CARGMT_VERSION

Я хочу заменить приведенный выше текст приведенным ниже текстом, используя sed

$path_track/GMT/cayu/station/GMT/$CARGMT_VERSION

Где версия - это переменная.

Как мы можем это сделать?

0
03.07.2017, 19:34
2 ответа

Поскольку путь содержит косые черты, вы, вероятно, не захотите использовать общий символ /в качестве разделителя для sed. Здесь вместо использования /я использую ^:

$ echo $path_tryuio
/this/is/some_path
$ echo $path_tryuio | sed -e "s^/is^^"
/this/some_path

Также обратите внимание на использование двойных кавычек вместо одинарных — оболочка не раскрывает переменные в одинарных кавычках.

0
28.01.2020, 04:44

Предполагая, что вы хотите изменить следующее

        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не будет рассматриваться как конец пространства шаблона, так как после него есть текст.

0
28.01.2020, 04:44

Теги

Похожие вопросы