我有一个输入表,部分:
TCTTTTAAAGCCTCCTCAACTGTTTTAGGG 1 0
CACAACTGAAAAGTACAATGTGTTTGCTTC 1 0
CACCATATTTATTTAAAGGAGCATCTAAAT 1 3
ACGAGAAAAAAAAAAGGGGTGACCCCCTGG 3 0
CAAAATATTAATTCTTTACTATGAAACTTA 1 0
TTCTATTTTGTCGTGGTTAGCAACCATCAC 6 5
TAATAATAAAATAATGAAAAAGAAAAATCA 1 0
AAAGCATTTGAAGGTGACAAAAGGGAAAGT 20 7
TGCTAAGGAAGAATCATGGAAGAGTGTTTT 0 1
CTCCCTTCCTCGCAAACATGCTTGCCCAGG 0 1
AATAAAAATCAAATTTAGTGACGGGTTGAG 130 4
AGAACGAAGCTGATATAAAGACATCAAAGA 1 0
TGCCCCTAATGCAGCATCTCTCTCTCCCTC 1 0
CCACAAAATAATTACATGGCAAACACGAGT 1 0
我想打印第 3 列 >= 120 和第 2 列 >= 420 的所有行
通过在数字周围使用和不使用“”,我得到了两个不同的结果。
(A) awk '$3>=120 && $2>=420 {print $0}'
(B) awk '$3>="120" && $2>="420" {print $0}'
(A) 部分的结果,这似乎是我想要的:
GTGTCATTTCATGCCTCATTCATCCTCATT 1375 439
TGAATTCTATTACTTGATTGACATTGACAG 541 301
TCTTTGGCGGTTGTTAAAGAATTTTCTGAT 823 203
TCTACACCTCAATATGCAAAACATTACATC 535 165
TTCAACAAATTAATTAAAATTGAATTAAAC 3010 627
GATATGTAAAAAAAATTATATTATATGAAT 609 173
(B) 的部分结果不是我想要的:
TAATAATAATAATAAAAGAAGAAGAAAAGA 5 2
TATCTGAGCTATCAACTCAATTCATCGTCG 5 4
TTAATGATAAATTTATCTTAAAAGTTTAAC 62 23
TTCAACCCCCTCTCCTGGTGTGTGCCCTAG 45 7
TCCAAAGCCTTTAATGTGTACCGCGTGAAA 6 5
GGCAATGGGATACTCCTGTATGTTATTCTA 6 3
我想到的问题是:数字选择中的引号(“)有何不同?
非常感谢。
答案1
引号强制对数字的字符串表示形式进行比较。按字母顺序,“42”位于“120”之后(“42”>“120”);从数字上看则不然(42 < 120)。
答案2
执行不带引号的比较,否则它们将是按字典顺序执行的字符串比较。
awk
通过允许执行默认操作,可以进一步减小小脚本的大小。没有块的条件测试的默认操作{...}
是打印当前输入行:
awk '$2>=420 && $3>=120' data.in