Unix 및 Awk를 사용하여 열을 기준으로 파일 정렬

Unix 및 Awk를 사용하여 열을 기준으로 파일 정렬

점수인 6번째 열을 기준으로 입력 파일을 정렬해야 합니다.

입력 파일:

Sc2/80  20 . A T 86 Pass N=2 F=5;U=4
Sc2/80  20 . A C 80 Pass N=2 F=5;U=4
Sc2/60  55 . G T 90 Pass N=2 F=5;U=4
Sc2/60  55 . G C 99 Pass N=2 F=5;U=4
Sc2/20  39 . C T 97 Pass N=2 F=5;U=4
Sc2/20  39 . C A 99 Pass N=2 F=5;U=4

예상 출력:

Sc2/20 39 . C T 97 Pass N=2 F=5;U=4
Sc2/20 39 . C A 99 Pass N=2 F=5;U=4
Sc2/60 55 . G T 90 Pass N=2 F=5;U=4
Sc2/60 55 . G C 99 Pass N=2 F=5;U=4
Sc2/80 20 . A T 86 Pass N=2 F=5;U=4
Sc2/80 20 . A C 80 Pass N=2 F=5;U=4

논리: 입력 파일의 모든 짝수 라인을 비교하고 점수에 따라(내림차순) 정렬하고 파일에서 해당 홀수 라인을 인쇄합니다. 임의의(짝수 행) 점수가 동일하면 해당 홀수 행의 점수를 확인해야 하므로 더 높은 점수가 우선적으로 적용되어 먼저 인쇄됩니다.

답변1

한 가지 가능한 해결책은 두 행을 모두 모아서 정렬한 다음 연결된 행을 다시 분할하는 것입니다.

awk '{ getline line; print $0, line }' input_file | 
    sort -k6,6nr -k15,15nr | 
    awk '{ $10 = "\n" $10; print }'

관련 정보