![在linux中用sed替换文本](https://linux22.com/image/114670/%E5%9C%A8linux%E4%B8%AD%E7%94%A8sed%E6%9B%BF%E6%8D%A2%E6%96%87%E6%9C%AC.png)
我的文件中有以下文本
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右侧的内容,您可以使用sed
as 来实现此目的:
sed -e 's|path_tryuio=$path_opt/\(GMT/$CARGMT_VERSION\)|$path_track/GMT/cayu/station/\1|'
请注意,在上面的 sed 命令中,我们使用的是单引号,因此$
变量不会被插值,而是作为文字字符串。
in$
不会$path_opt
被视为模式空间的结尾,因为它后面有文本。