将 ${} 变量传递给 awk 而不会丢失它



我有以下字符串This is ${name} ${surname}。此字符串不可替代

现在我需要用我自己的数据替换${name}${surname}。我想使用 sed/awk,但是当我输入时

string="This is ${name} ${surname}"
echo $string | awk '{... gsub() ...}'

那么问题是,为了awk我只通过This is,因为echo解决了空${}

我不知道我是否可以使用类似的东西

awk <<EOF
This is ${name} ${surname}
EOF

因为我需要将其包装成变量,并且由于 bash 是单行代码,我不能那样打字

VAR=$(awk <<
This is ${name} ${surname}
EOF)

感谢您抽出宝贵时间

使用单引号定义字符串(以避免 shell 扩展):

string='This is ${name} ${surname}'

然后在awk中使用:

echo "$string" | awk '{print $0}'
This is ${name} ${surname}

您可以看到awk如何获取未展开的字符串。

简单的shell怎么样:

template='This is ${name} ${surname}'
name=Peter
surname=Falk
eval "echo $template"

将打印

This is Peter Falk

您想将awk用于此简单任务有什么特殊原因吗?

相关内容

  • 没有找到相关文章

最新更新