【问题标题】:Substract between columns and print it with AWK在列之间减去并使用 AWK 打印
【发布时间】:2010-10-08 12:37:41
【问题描述】:

我有以下输入数据:

AATGCCACGTTGAGAGGCGTTCGCGGAAGGCGCG      44      40.000
AATGCCACTCGGGTCCGAGATGGCGGATCTCCAC      35      37.000
AATGCCAGAGCTGTGGTAGTGTGAAAGCAGCAGT      13      13.000

我想要做的是用第 2 列减去第 3 列 产生:

AATGCCACGTTGAGAGGCGTTCGCGGAAGGCGCG      -4
AATGCCACTCGGGTCCGAGATGGCGGATCTCCAC      2
AATGCCAGAGCTGTGGTAGTGTGAAAGCAGCAGT      0

但是为什么这个 awk 不起作用:

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

【问题讨论】:

  • 嘿,等一下,这是我的 DNA 副本(我认出了第二行的“CGAGATGGCGG”位)。你从哪里得到的?
  • 你父母不是告诉过你是在开放 dna 序列许可下获释的吗?

标签: unix awk


【解决方案1】:

因为您只在最后打印出一次差异,这意味着除了最后一行之外的所有内容都被有效地丢弃了。 (END 块只运行一次,当 整个 输入已被读取和处理)你想要这个代替:

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

NF > 0 防止 awk 为空行打印无意义的 0。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-13
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    相关资源
    最近更新 更多