Ksh
如何對兩個數字欄位進行排序
我有一個文件名列表,如下所示:
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 包含第一個未排序的列表。
乾杯。