如何在awk中打​​印变量

Sha*_*dra 6 bash scripting awk

我希望awk解释变量如下

#!/bin/bash

file=tau
f=2.54
order=even

awk '{sum+=$2}; END {print '${file}_${f}_${order}_v1.xls', sum/NR}'
${file}_${f}_${order}_v1.xls >> safe/P-state-summary.xls
Run Code Online (Sandbox Code Playgroud)

我想要所需的输出如下 -

tau_2.54_even_v1.xls   sum/NR
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗?

Mat*_*all 14

首先,export如果您希望在子进程的环境中传递它们,则需要环境变量awk.

其次,您可以使用ENVIRON["name"]获取环境变量awk.所以以下内容对我有用:

#!/bin/bash

export file=tau
export f=2.54
export order=even

awk '{sum+=$2}; END {print ENVIRON["file"] "_" ENVIRON["f"] "_" ENVIRON["order"] "_v1.xls", sum/NR}'
Run Code Online (Sandbox Code Playgroud)


The*_*sai 10

不要忘记您可以在命令行上设置"AWK变量"

awk -v FOO=bar '...<AWK code that uses the AWK variable FOO>...'
Run Code Online (Sandbox Code Playgroud)


Dig*_*oss 8

我想这就是你想要的:

#!/bin/bash

file=tau
f=2.54
order=even

awk "{sum+=\$2}; END {print \"${file}_${f}_${order}_v1.xls\", sum/NR}" \
  ${file}_${f}_${order}_v1.xls >> safe/P-state-summary.xls
Run Code Online (Sandbox Code Playgroud)