如何使用 nextflow 在 awk 脚本中包含来自另一个文件的函数

How to inlcude functions from another file in a awk script using nextflow

根据 Nextflow 文档,我将我的 awk 脚本放在 bin/ 文件夹中。一些脚本共享相同的函数,所以我写了一个文件,其中只有我通常使用的 awk 函数:

@include "relative/path/to/lib.awk"

但是因为脚本在 nextflow 工作目录中运行,所以相对路径不再有效。我也尝试将库文件放入 bin/,但效果不佳。

我该如何进行?我不想 copy/paste 脚本中的函数,我也不想硬编码绝对路径。

感谢@Pallie 关于 workflow.projectDir 的提示。关于这个变量的文档是 here (I thought I looked everywhere, it was not clear I could do that), this answer also helped: .

awk 可以在 AWKPATH 中加载库文件,我的文件在 lib/ 中,因此,对于下一个流程:

process my_process {
  input:
  path input from input_channel

  output:
  path "output.txt"

  script:
  """
  export AWKPATH="$workflow.projectDir/lib"
  script.awk ${input} > output.txt
  """
}

在脚本的顶部,我这样调用库文件

@include "my_functions.awk"