Вычтите между столбцами и напечатайте с помощью AWK - PullRequest
0 голосов
/ 19 февраля 2009

У меня есть следующие входные данные:

AATGCCACGTTGAGAGGCGTTCGCGGAAGGCGCG      44      40.000
AATGCCACTCGGGTCCGAGATGGCGGATCTCCAC      35      37.000
AATGCCAGAGCTGTGGTAGTGTGAAAGCAGCAGT      13      13.000

Что я хочу сделать, это вычесть столбец 3 из столбца 2 выход:

AATGCCACGTTGAGAGGCGTTCGCGGAAGGCGCG      -4
AATGCCACTCGGGTCCGAGATGGCGGATCTCCAC      2
AATGCCAGAGCTGTGGTAGTGTGAAAGCAGCAGT      0

Но почему этот awk не работает:

 $ awk '{dif =($3 - $2)}END{print dif}' input.txt

1 Ответ

4 голосов
/ 19 февраля 2009

Поскольку вы распечатываете разницу только один раз, в конце, что означает, что все, кроме последней строки, эффективно отбрасывается. (Блок END запускается только один раз, когда вход весь прочитан и обработан) Вместо этого вы хотите:

awk 'NF > 0 { print $1 "\t" ($3 - $2) }' input.txt

NF > 0 не позволяет awk печатать бессмысленные 0 для пустых строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...