在sed命令中使用变量

use*_*171 26 variables bash escaping sed

我似乎无法在sed命令中使用变量,例如:

sed "24s/.*/"$ct_tname"/" file1.sas > file2.sas
Run Code Online (Sandbox Code Playgroud)

我想要$ct_tname变量,而不是字面意思$ct_tname,这是我不断得到的.

有谁知道如何让这个工作?

问题实际上更复杂,我省略了一些信息.

ct_fname="%let outputfile="/user/ct_"$1".csv";"
Run Code Online (Sandbox Code Playgroud)

这里$1是在我的bash脚本开始时传入的参数(sed是在bash脚本中运行的).

这不正常运行,但是它确实运行,如果我取代ct_fname

ct_fname="%let table=ct_$1;"
Run Code Online (Sandbox Code Playgroud)

有没有办法让第一个ct_fname成功通过?

c00*_*ter 38

你需要使用双引号(")而不是单引号(').单引号按字面顺序传递其内容,而不转换变量(扩展).

尝试

sed "24s/.*/\"$ct_tname\"/" file1.sas > file2.sas
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果你要编辑一个文件(即如果file2.sas是一个临时文件),你应该使用它ed.