awk:自动从文件调用函数

awk:自动从文件调用函数,awk,gawk,Awk,Gawk,我需要在awk中多次执行绝对值计算 但是绝对值没有内置在awk中,因此我的许多awk命令如下所示: awk 'function abs(x){return ((x < 0.0) ? -x : x)} { ...calls to "abs" .... }' file awk'函数abs(x){return((x

我需要在
awk
中多次执行绝对值计算

但是绝对值没有内置在
awk
中,因此我的许多
awk
命令如下所示:

awk  'function abs(x){return ((x < 0.0) ? -x : x)}  { ...calls to "abs" .... }'  file
awk'函数abs(x){return((x<0.0)?-x:x)}{…调用“abs”…}文件
是否有办法将用户定义的
awk
函数存储在文件中,并让
awk
在调用时自动加载这些函数?


类似于设置
awk
“include”路径或用户配置文件,与bash和其他程序的设置方式大致相同。

您可以使用
@include“file”
导入文件

e、 g.创建名为
func_lib
的文件:

function abs(x){
    return ((x < 0.0) ? -x : x)
}
也尝试

$ cat function_lib.awk
  function abs(x){
      return ((x < 0.0) ? -x : x)
 }

正如@Basilevs posted链接所述,您可以使用
@include“file”
导入文件。我想您也可以将
awk
别名为
awk-I funcs.awk
,但我每次都必须这样做。。。我想马克·塞切尔的评论最适合你的具体用途,也许是最好的。这取决于您想如何调用
awk
。仅将其包含在需要外部功能的特定
awk
程序中可能是有意义的。此外,如果使用
awk
脚本,则在顶部执行所有
@include
s似乎更实际,而不是将每个都传递给
-i
命令行参数。
$ cat function_lib.awk
  function abs(x){
      return ((x < 0.0) ? -x : x)
 }
$ awk -f function_lib.awk --source 'BEGIN{ print abs(-1)}'