Solaris: 숫자 값 정렬

Solaris: 숫자 값 정렬

다음 값을 가진 파일이 있습니다.

keyword1 19.02 1.69.94
keyword2 19.01 1.68.118
keyword3 19.02 1.69.119
keyword4 19.01 1.68.115
keyword5 19.02 1.69.304
keyword6 19.02 1.69.39

세 번째 열을 기준으로 정렬하고 싶습니다.

Linux에서는 버전 순서를 사용하는 다음 명령이 작동합니다.

raj@VirtualBox:$ grep 19.02 file.txt | sort -t ' ' -k3 -V
keyword6 19.02 1.69.39
keyword1 19.02 1.69.94
keyword3 19.02 1.69.119
keyword5 19.02 1.69.304

Unix(Solaris)에서는 버전 순서가 손실된 것 같습니다. 나는 솔라리스에서 실행 가능한 대안을 찾아보았지만 아무것도 찾지 못했습니다.

Python에서도 솔루션을 사용할 수 있습니다.

답변1

.필드를 반전하여 필드 구분 기호 로 사용할 수 있습니다 .

awk '{print $3,$2,$1}' your_file |
   sort -nt. -k1,1 -k2,2 -k3,3 |
   awk '{print $3,$2,$1}'

또한 내 Solaris 시스템에는 GNU 유형(Linux와 동일)이 있지만 /usr/gnu/bin/sort설치한 기억이 없습니다 ;-)

답변2

당신은 언급했습니다 python- 다음은 Solaris 시스템에 있는 모든 python2 버전에서 작동할 수 있는 python2 솔루션입니다.

lines = open('file.txt').readlines()
lines = [l.split() for l in lines]
lines = [line for line in lines if line[1] == "19.02"]
def sorter(x):
    z = x[-1].split(".")
    return x[0], x[1], [int(y) for y in z]

lines.sort(key=sorter)
for line in lines:
    print " ".join(line)

관련 정보