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

관련 정보