awk,数字选择中引号(“)的作用是什么?(Linux)

awk,数字选择中引号(“)的作用是什么?(Linux)

我有一个输入表,部分:

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

相关内容