在linux中用sed替换文本

在linux中用sed替换文本

我的文件中有以下文本

path_tryuio=$path_opt/GMT/$CARGMT_VERSION

我想使用下面的文本替换上面的文本sed

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

其中版本是变量。

我们应该怎么做?

答案1

由于路径包含斜杠,您可能不想使用公共/字符作为 sed 的分隔符。在这里,/我没有使用^

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

另请注意使用双引号而不是单引号 - shell 不会扩展单引号内的变量。

答案2

假设您想要修改以下内容

        path_tryuio=$path_opt/GMT/$CARGMT_VERSION

=而不是通常所期望的 as右侧的内容,您可以使用sedas 来实现此目的:

sed -e 's|path_tryuio=$path_opt/\(GMT/$CARGMT_VERSION\)|$path_track/GMT/cayu/station/\1|'

请注意,在上面的 sed 命令中,我们使用的是单引号,因此$变量不会被插值,而是作为文字字符串。

in$不会$path_opt被视为模式空间的结尾,因为它后面有文本。

相关内容