awk,引号(")在选号中的作用?(Linux)

Joh*_*Tam 4 awk

我有一个输入表,部分:

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
Run Code Online (Sandbox Code Playgroud)

我想打印第 3 列 >= 120 和第 2 列 >= 420 的所有行

通过在数字周围使用和不使用“”,我得到了两种不同的结果。

(A) awk '$3>=120 && $2>=420 {print $0}'

(B) awk '$3>="120" && $2>="420" {print $0}'
Run Code Online (Sandbox Code Playgroud)

(A) 部分的结果,这似乎是我想要的:

GTGTCATTTCATGCCTCATTCATCCTCATT  1375    439
TGAATTCTATTACTTGATTGACATTGACAG  541     301
TCTTTGGCGGTTGTTAAAGAATTTTCTGAT  823     203
TCTACACCTCAATATGCAAAACATTACATC  535     165
TTCAACAAATTAATTAAAATTGAATTAAAC  3010    627
GATATGTAAAAAAAATTATATTATATGAAT  609     173
Run Code Online (Sandbox Code Playgroud)

(B) 的部分结果不是我想要的:

TAATAATAATAATAAAAGAAGAAGAAAAGA  5       2
TATCTGAGCTATCAACTCAATTCATCGTCG  5       4
TTAATGATAAATTTATCTTAAAAGTTTAAC  62      23
TTCAACCCCCTCTCCTGGTGTGTGCCCTAG  45      7
TCCAAAGCCTTTAATGTGTACCGCGTGAAA  6       5
GGCAATGGGATACTCCTGTATGTTATTCTA  6       3
Run Code Online (Sandbox Code Playgroud)

我想到了一个问题:数字选择中的引号 (") 有何不同?

非常感谢。

xhi*_*nne 7

引号强制对数字的字符串表示进行比较。按字母顺序,“42”在“120”之后(然后有“42”>“120”);在数字上它没有(然后你有 42 < 120)。