Shell-Script
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) 上似乎缺少版本排序。我四處尋找在 Solaris 上工作的替代方案,但找不到。
我也可以在 python 中使用解決方案。
您可以嘗試反轉欄位並
.
用作欄位分隔符: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
,我不記得曾經安裝過它;-)
您提到
python
過 - 以下是一個 python2 解決方案,有望在您的 Solaris 機器上存在的任何 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)