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)
我想这就是你想要的:
#!/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)