如何在 awk 表达式中使用变量
我正在尝试执行此命令:
sed bla bla filename | awk '{printf "%s %s_entry_%.3f %.3f %.3f %.3f",$1,$3,$4,$5,$6,$7}'
但问题是,我希望 %.3f 部分是可变的。因此,在一种情况下,它可能是 %.3f,在另一种情况下,它可能是 %.3f %.3f %.3f。因此,为了清楚起见,我将在示例代码中使用静态代码。因此,如果我想要其中的 4 个 %.3f 并将它们放入变量 $values 中,如下所示:
values="%.3f %.3f %.3f %.3f"
那么如何将此字符串放入 awk 表达式中,而不使 awk 仅将“${values}”放在那里。以下是我的非工作尝试:
sed bla bla filename | awk '{printf "%s %s_entry_${values}",$1,$3,$4,$5,$6,$7}'
I'm trying to make this command:
sed bla bla filename | awk '{printf "%s %s_entry_%.3f %.3f %.3f %.3f",$1,$3,$4,$5,$6,$7}'
But the thing is, i want the %.3f part to be variable. So in one case it could be %.3f and in another it could be %.3f %.3f %.3f. So i'll just use a static one in my example code for clarity. So if i want 4 of these %.3f and put them in variable $values like so:
values="%.3f %.3f %.3f %.3f"
Then how can I put this string in the awk expression, without making awk to just put literally "${values}" in there. The following is my non-working-attempt:
sed bla bla filename | awk '{printf "%s %s_entry_${values}",$1,$3,$4,$5,$6,$7}'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用 awk 的
-v
选项从 shell 传入变量,gsub()
函数将用sed
替换您所拥有的内容命令。所以只需一个 awk 命令就可以了。在这种情况下,sed
是多余的(以及使用 awk 的大多数其他情况)you can use
-v
option of awk to pass in variable from the shellthe
gsub()
function is to replace what you have with thatsed
command. So just one awk command will do.sed
is redundant in this case (and most other cases where awk is used)最容易使用实际的 awk 变量:
或者使用 bash:
Easiest to use actual awk variables:
Or with bash:
如果您的意思是
values
是一个 shell 变量,那么这将起作用:If you mean that
values
is a shell variable, then this will work: