gpt4 book ai didi

variables - awk 中使用变量进行除法

转载 作者:行者123 更新时间:2023-12-02 04:14:26 25 4
gpt4 key购买 nike

我正在尝试执行如下操作:

 sd=0.206887
mean=0.0195143
awk '{print $2-$mean/$sd}' ABC.txt

但是我收到错误:

awk: (FILENAME=ABC.txt FNR=1) fatal: division by zero attempted

想知道在这种情况下使用变量的正确方法,TIA

最佳答案

尝试

awk "{print \$2-$mean/$sd}" ABC.txt

Shell 双引号允许替换,$$2 中转义,以便它传递到 Awk,而不是由 shell 解释。

直接插值是将变量传递给 Awk 的一种棘手方法。一种不太棘手的方法是使用 Awk 的 -v 选项将变量定义为 Awk 变量:

awk -v foo=123 -v bar=str 'BEGIN { print foo, bar }'

另一种最透明的方法是使用环境变量:

envvar=hey awk 'BEGIN { print ENVIRON["envvar"] }'

之所以更加透明,是因为 -v 的参数被 Awk 解释为 Awk 语法。更准确地说,作为字符串文字内部的语法:

$ echo 'foo\nbar'
foo\nbar

$ awk -v contains_newline='foo\nbar' 'BEGIN { print contains_newline }'
foo
bar

$ no_newline='foo\nbar' awk 'BEGIN { print ENVIRON["no_newline"] }'
foo\nbar

关于variables - awk 中使用变量进行除法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34616498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com