У меня есть файл, который имеет числовые значения в виде матрицы. Я написал скрипт awk, который печатает заголовок, а затем добавляет 1 к столбцу «сумма», если значения в столбцах меньше 5 и больше 0. Затем, в конце, он печатает сумму каждого столбца. Эта часть отлично работает:
awk '
BEGIN {FS=OFS=" "}
NR==1 {print}
NR>1 {for (i=1;i<=NF;i++) if ($i < 5 && $i > 0) a[i]+=1}
END {for (i=1;i<=NF;i++) printf $a[i]
}' snp_fake2.txt > tmp.txt`
Моя цель - напечатать весь столбец, если сумма этих столбцов больше некоторого значения THRESHOLD. Я попытался добавить оператор if после второго цикла for, чтобы определить, является ли сумма столбцов a [i]> THRESHOLD, и затем напечатать столбец:
awk '
BEGIN {FS=OFS=" "}
NR==1 {print}
NR>1 {for (i=1;i<=NF;i++) if ($i < 5 && $i > 0) a[i]+=1}
END {for (i=1;i<=NF;i++) if (a[i] < THRESHOLD) printf $i
}' snp_fake2.txt > tmp.txt`
Но когда я запускаю это, скрипт не выводит весь столбец, только одно число. Как я могу напечатать весь столбец вместо одного значения?