Ksh

如何對兩個數字欄位進行排序

  • November 12, 2014

我有一個文件名列表,如下所示:

epdb_0_0.pdb
epdb_0_10.pdb
epdb_0_11.pdb
epdb_0_12.pdb
epdb_0_13.pdb
epdb_0_14.pdb
epdb_0_15.pdb
epdb_0_16.pdb
epdb_0_17.pdb
epdb_0_18.pdb
epdb_0_19.pdb
epdb_0_1.pdb
epdb_0_20.pdb
epdb_0_21.pdb
epdb_0_22.pdb
epdb_0_23.pdb
epdb_0_24.pdb
epdb_0_25.pdb
epdb_0_26.pdb
epdb_0_27.pdb
epdb_0_28.pdb
epdb_0_29.pdb
epdb_0_2.pdb
epdb_0_30.pdb
...

如何使用 Unix 排序命令使列表看起來像:

epdb_0_0.pdb
epdb_0_1.pdb
epdb_0_2.pdb
...
epdb_0_10.pdb
epdb_0_11.pdb
epdb_0_12.pdb
epdb_0_13.pdb
epdb_0_14.pdb
epdb_0_15.pdb
epdb_0_16.pdb
epdb_0_17.pdb
...
epdb_1_0.pdb
epdb_1_2.pdb
epdb_1_3.pdb
...

我知道這是 的某種用法--key= flag,可能是組合的iwht -n or -g,但我無法讓它工作。

與其嘗試以特定方式對文件名列表進行排序,不如使用:

ls -1v *.pdb

首先按所需順序列出文件。

可以這樣做:

$ cat file.txt | sort -t"_" | sort -n -k3 -t"_"
  • file.txt 包含第一個未排序的列表。

乾杯。

引用自:https://unix.stackexchange.com/questions/167518