如何在 sedscript 中使用变量

如何在 sedscript 中使用变量

我在 shell 脚本中设置了一个变量,然后调用 sed 脚本,并在 sed 脚本中使用该变量,但这似乎不起作用,我需要有关如何实现这一点的帮助

  1. 在命令行上进行以下工作

sed -e “s/text/$VAR” 测试文件

  1. 以下不起作用

测试文件

导出 VAR=somevar
sed -f sedfile 测试文件

测试文件

这是一个测试文件

sed文件

s/文本/$VAR/

也尝试过

s/文本/${VAR}/

结果

这是一个$VAR文件

预期输出

这是一个 somevar 文件

答案1

"示例的命令行版本中的软引号允许shell 扩展变量通过你的外壳,在 sed 执行 sed 指令之前。

sedfile 不是 shell 脚本,而是由 sed 解释的 sed 脚本,因此无法对变量进行 shell 扩展。据我所知,这根本行不通。

答案2

您可能希望使用此文档语法生成 sedfile

cat <<foobar > sedfile
s/text1/${VAR1}/
s/text2/${ANOTHERVAR}/
foobar
  • foobar必须用在行首
  • foobar可以是任何字符串,只需使用相同的字符串即可<<foobar

然后做 seding

sed -f sedfile testfile

我预计您的 sedfile 有点复杂,对于一两次替换来说可能不值得使用它。

相关内容