Bash 如何使用sed用backtick替换字符串

Bash 如何使用sed用backtick替换字符串,bash,shell,sh,Bash,Shell,Sh,如何使用shell/bash脚本的“sed”将字符串替换为变量的内容,并用锐/反斜杠将其包围 例如: 包含行的文件(file.txt) FILE_PATH="this/is/the/file/path" 替换 FILE_PATH=`get/file/path/get.sh FILE_NAM` 我尝试了以下sed,但对我无效 SCRIPT_PATH="get/file/path/get.sh FILE_NAM" sed -i "s,\&quo

如何使用shell/bash脚本的“sed”将字符串替换为变量的内容,并用锐/反斜杠将其包围

例如:

包含行的文件(file.txt)

FILE_PATH="this/is/the/file/path" 
替换

FILE_PATH=`get/file/path/get.sh FILE_NAM`
我尝试了以下sed,但对我无效

SCRIPT_PATH="get/file/path/get.sh FILE_NAM"
sed -i "s,\"this/is/the/file/path\",`$SCRIPT_PATH`,g" $file
上述结果

FILE_PATH=get/file/path/
但这是意料之中的

FILE_PATH=`get/file/path/get.sh FILE_NAM`

有人能帮我用一个变量的内容替换字符串吗?变量的值是acure。

如果问题纯粹是由于
sed
,那么您的命令格式不太正确。看起来总的问题是没有打印`字符的转义序列,这是bash中的一个特殊字符,用于在另一个命令中执行shell命令

基于您期望的结果和示例代码,下面的内容在bash中适用于我

SCRIPT_PATH="this/is/the/file/path"
sed -i "s|\"this/is/the/file/path\"|\`$SCRIPT_PATH\`|g" file.txt

如果问题纯粹是由
sed
引起的,则您的命令格式不太正确。看起来总的问题是没有打印`字符的转义序列,这是bash中的一个特殊字符,用于在另一个命令中执行shell命令

基于您期望的结果和示例代码,下面的内容在bash中适用于我

SCRIPT_PATH="this/is/the/file/path"
sed -i "s|\"this/is/the/file/path\"|\`$SCRIPT_PATH\`|g" file.txt

我发现答案如下:

SCRIPT_PATH="get/file/path/get.sh FILE_NAM"
sed -i "s,\"this/is/the/file/path\","\`"$SCRIPT_PATH"\`",g" $file

我发现答案如下:

SCRIPT_PATH="get/file/path/get.sh FILE_NAM"
sed -i "s,\"this/is/the/file/path\","\`"$SCRIPT_PATH"\`",g" $file