1

У меня есть awk-скрипт, который суммирует столбец 3, затем 4, для каждого значения в столбце 1 и когда столбец 2> 0:

awk 'BEGIN { print "Target covered_bases percentage_covered" } {FS = "\t" } $2 > 0 { n[$1]++; covered_bases[$1] += $3 ;percentage_covered[$1] += $4 } END { for (i in n) { print i,covered_bases[i],percentage_covered[i] } }' $1

Мой инфил будет таким:

S 0 20 0.2
S 1 300 0.7
S 2 10 0.1
D 0 10 0.3
D 1 20 0.6
D 2 2  0.02
D 3 5  0.034

И так далее, скажем, Z. Вывод здесь будет:

Target covered_bases percentage_covered
S 310 0.8
D 27  0.654

Так что это нормально. Однако буквы выводятся в неправильном порядке. Я знаю из других вопросов здесь, что awk иногда выводит вещи не в порядке. Моя проблема в том, что я не могу исправить это, используя предыдущие ответы, приведенные на этом форуме, так как мое понимание awk совсем не велико, и мой "сценарий" уже довольно сложен для меня.

Не могли бы вы дать мне знать, как я могу это исправить?

Большое спасибо!

1 ответ1

0

Просто передайте вывод вашего awk для sort команды, но добавьте заголовок после обработки awk .

awk '{FS = "\t" } $2 > 0 {
    n[$1]++;
    covered_bases[$1] += $3;
    percentage_covered[$1] += $4;
}
END {
    for (i in n) {
        print i,covered_bases[i],percentage_covered[i];
    }
}' $1 | sort | (echo 'Target covered_bases percentage_covered' && cat)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .