У меня есть текст ниже в файле
path_tryuio=$path_opt/GMT/$CARGMT_VERSION
Я хочу заменить вышеуказанный текст на приведенный ниже текст, используя sed
$path_track/GMT/cayu/station/GMT/$CARGMT_VERSION
Где версия является переменной.
Как мы можем это сделать?
$path_opt
и$path_track
переменная, которая должна быть расширена?sed -i 's/path_tryuio=$path_opt//GMT//$CARGMT_VERSION/path_tryuio=$path_track//GMT//cayu//station//GMT//$CARGMT_VERSION/g' *
Ответы:
Поскольку путь содержит косые черты, вы, вероятно, не хотите использовать общий
/
символ в качестве разделителя для sed. Здесь вместо использования/
я использую^
:Также обратите внимание на использование двойных кавычек вместо одинарных кавычек - оболочка не раскрывает переменные внутри одинарных кавычек.
источник
Предполагая, что вы хотели следующий модифицированный
а не то, что находится справа от того,
=
что обычно ожидается, вы можете добиться этого, используяsed
:Обратите внимание, что в приведенной выше команде sed мы имеем одинарные кавычки, поэтому
$
переменные не будут интерполироваться, а являются литеральными строками.$
В$path_opt
не будет рассматриваться как конец шаблона, поскольку есть текст после него.источник