Linux에서 숫자, 문자 및 구분 기호가 포함된 일부 데이터(900만 행)를 사용하여 특정 열(열 2)을 정렬하려고 했습니다.
chr position p-value
10 chr10:6754:SG 0.2
1 chr1:68789:SG 0.6
16 chr16:68789:IG 0.88
9 chr9:68789:IG.0 0.4
1 chr1:8885436:SG:0 0.02
10 chr10:6788554:SG 0.01
내가 원하는 출력 파일:
이 코드를 실행합니다. sort -V -t: -k2,4n myfile >sortedfile
그러나 출력 파일이 정렬되지 않았습니다
답변1
문제는 -t:
옵션입니다. 공백을 무시하고 :
문자만 필드 구분 기호로 사용하도록 정렬에 지시합니다.
이 시도:
$ sort -V -k2,2 input.txt
1 chr1:68789:SG 0.6
1 chr1:8885436:SG:0 0.02
9 chr9:68789:IG.0 0.4
10 chr10:6754:SG 0.2
10 chr10:6788554:SG 0.01
16 chr16:68789:IG 0.88
chr position p-value
이것은 여전히 "버전 정렬"에 -V 옵션을 사용하지만 두 번째 필드로만 정렬됩니다.
더 나은 방법은 헤더 행을 첫 번째 행으로 유지하는 것입니다.
$ head -n 1 input.txt ; tail -n +2 input.txt | sort -V -k2,2
chr position p-value
1 chr1:68789:SG 0.6
1 chr1:8885436:SG:0 0.02
9 chr9:68789:IG.0 0.4
10 chr10:6754:SG 0.2
10 chr10:6788554:SG 0.01
16 chr16:68789:IG 0.88