Как указать действия AWK внутри конвейера Nextflow? - PullRequest
0 голосов
/ 13 февраля 2020
awk '($1<1)|| ($1>22) {print $2}' $input > $output

Если я помещу эту строку в Nextflow (записанный в groovy (Java)) конвейерный сценарий, он покажет ошибку, которая упоминает проблему с нотацией переменных (эти: $ 1, $ 2). Он отлично работает за пределами Nextflow . Как еще можно вставить переменные здесь, чтобы он работал?

Я пытался

 awk '(${1}<1)|| (${1}>22) {print ${2}}' $input > $output

, который выводит пустой файл. Желаемый вывод будет для него просто работать в Nextflow .

1 Ответ

1 голос
/ 13 февраля 2020

Если ваш раздел сценария процесса заключен в тройные кавычки, экранируйте литералы $ с помощью \:

"""
awk '(\$1<1)|| (\$1>22) {print \$2}' $input > $output

"""

Обтекание обоими текущими методами заставляет nextflow искать переменные 1 и 2.

https://www.nextflow.io/docs/latest/script.html#string -интерполяция

...