我在 shell 脚本中设置了一个变量,然后调用 sed 脚本,并在 sed 脚本中使用该变量,但这似乎不起作用,我需要有关如何实现这一点的帮助
- 在命令行上进行以下工作
sed -e “s/text/$VAR” 测试文件
- 以下不起作用
测试文件
导出 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 有点复杂,对于一两次替换来说可能不值得使用它。