다음 값을 가진 파일이 있습니다.
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)