두 개의 숫자 열을 기준으로 정렬

두 개의 숫자 열을 기준으로 정렬

나는 chr(열 2)과 위치(열 3)를 기준으로 낮은 것부터 높은 것 순으로 유전자 파일을 정렬하려고 합니다. 내 테이블은 큰 파일에서 다음과 같습니다.

SNP CHR BP  A1  A2  effect_allele_frequency BETA    standard_error  P
rs10875231  1   100000012   T   G   0.405   -0.0456807  0.02260471  0.04335677
rs6678176   1   100000827   C   T   0.383   0.02553138  0.02287662  0.2645817
rs78590530  1   100000948   A   G   0.016   0.171376    0.08757958  0.05035017
rs149636485 1   100001060   A   G   0.004   -0.03363731 0.1819208   0.8529224

다른 열을 무시하고 각 문자를 개별적으로 수행하면서 CHR(1부터 22까지)을 낮은 순으로 정렬하고 싶습니다. 이 정렬 명령을 시도했습니다

sort -t $'\t' -nk3 myfile.tsv | sort -t $'\t' -nk2  > test.txt

chr(열 2)에는 순서가 제공되지만 위치(열 3)는 제공되지 않습니다. 첫 번째 열이 다음을 방해하는 것 같습니다.

SNP CHR BP  A1  A2  effect_allele_frequency BETA    standard_error  P
rs1000033   1   226580387   G   T   0.416   0.02958699  0.02295015  0.1971771
rs1000050   1   162736463   T   C   0.378   0.06136397  0.02293639  0.007468015
rs1000070   1   222359612   C   T   0.381   0.02563547  0.02294139  0.2638107
rs1000073   1   157255396   G   A   0.387   -0.01470793 0.02273634  0.517414
rs1000085   1   66857915    C   G   0.024   -0.03536382 0.07555889  0.6394446
rs1000127   1   63432716    C   T   0.157   0.003052272 0.03045933  0.919875

2열을 기준으로 정렬한 다음 3열만 기준으로 정렬하려면 어떻게 해야 합니까?

답변1

한 번의 호출로 모든 키를 정렬된 순서로 지정 해야 하며 sort종료 필드를 제공해야 합니다.

sort -n -k2,2 -k3,3

sort -n -k3공백을 건너뛴 후 필드 3부터 시작하는 숫자로 구성된 숫자를 비교하여 정렬을 나타냅니다. 별도의 필드로 파이프되며 sort -n -k2, 두 번째 및 후속 필드의 내용을 기준으로 정렬됩니다(최대 비숫자 문자). 그러나 그것은 당신의 결과를 설명하지 않습니다 ...

-n-k및 의 설명을 참조하세요 .sort명세서더 알아보기.

관련 정보