开发者

How to print variable inside awk

开发者 https://www.devze.com 2022-12-13 11:50 出处:网络
I want the awk to interpret the variable as follows #!/bin/bash file=tau f=2.54 order=even awk \'{sum+=$2}; END {print \'${file}_${f}_$开发者_高级运维{order}_v1.xls\', sum/NR}\'

I want the awk to interpret the variable as follows

#!/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

I want the desired output as follows -

tau_2.54_even_v1.xls   sum/NR

Can anybody help me out with this ?


First, you need to export environment variables if you want them to be passed in the environment of a child process like awk.

Second, you can use ENVIRON["name"] to get an environment variable in awk. So the following works for me:

#!/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}'


Don't forget that you can set "AWK variables" on commandline

awk -v FOO=bar '...<AWK code that uses the AWK variable FOO>...'


I think this is what you want:

#!/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


Well I used a mixture of the above solutions and got it working with this

printf "\n${file}_${f}_${order}_v1.xls  " >> Safe/P-state-summary.xls
awk '{sum+=$3}; END  {print sum/NR}' ${file}_${f}_${order}_v1.xls >> Safe/P-state-summary.xls
0

精彩评论

暂无评论...
验证码 换一张
取 消