如何使用变量与sed

12 浏览
0 Comments

如何使用变量与sed

我想使用变量与sed命令。我的脚本如下:

input_variable="test" &&
ssh root@192.168.7.2 'cd /path/to/file && sed -i "s/this is not/this is a $input_variable/g" text.txt'

我的脚本应该将this is not替换为this is a test

然而实际上它替换为了this is a,并且不知何故忽略了变量input_variable

有人有想法吗?

0
0 Comments

问题出现的原因是单引号字符串中的环境变量不会被替换。解决方法是将字符串改为双引号,并在需要替换环境变量的地方使用`${input_variable}`的形式。具体的解决方法如下:

input_variable="test" &&
ssh root.168.7.2 "cd /path/to/file && sed -i \"s/this is not/this is a ${input_variable}/g\" text.txt"

这样,`${input_variable}`就会被替换为环境变量`test`的值,然后通过SSH连接到远程服务器,执行sed命令来替换文件中的文本。

0
0 Comments

在上面的代码中,我们看到了一个使用sed命令和变量的示例。然而,这个示例中的变量并没有被正确地插入到命令中,导致无法实现预期的替换操作。下面将介绍出现这个问题的原因,并给出解决方法。

问题的原因在于在sed命令中使用了单引号来包裹整个命令。在单引号内部,变量无法被正确地插入。为了解决这个问题,我们建议仍然使用单引号,但在变量的位置切换到双引号。

下面是修复后的代码示例:

input_variable="test" &&
ssh root.168.7.2 'cd /path/to/file && sed -i "s/this is not/this is a '"$input_variable"'/g" text.txt'

在修复后的代码中,我们使用了双引号将变量$input_variable插入到了sed命令中的合适位置。这样,当命令被执行时,变量将被正确地替换进去,实现了预期的替换操作。

通过使用双引号和单引号的组合,我们可以在sed命令中使用变量,并且确保变量能够被正确地插入到命令中。这种方法在处理包含变量的字符串时非常有用,可以帮助我们更灵活地操作文本文件。

0