【发布时间】:2017-01-23 10:41:43
【问题描述】:
我有一个不按顺序排列的名字列表。如何使用 alphabetical 部分的 custom 排序顺序以正确的字母数字顺序获取它们?
我的档案numbers.txt:
alpha-1
beta-3
alpha-10
beta-5
alpha-5
beta-1
gamma-7
gamma-1
delta-10
delta-2
主要的一点是我的脚本应该认识到它应该在beta之前打印alpha,在gamma之前打印beta,在gamma之前打印delta。
也就是说,单词应该根据它们所代表的希腊字母表中的字母顺序进行排序。
预期顺序:
alpha-1
alpha-5
alpha-10
beta-1
beta-3
beta-5
gamma-1
gamma-7
delta-2
delta-10
PS:我试过sort -n numbers.txt,但它不符合我的需要。
【问题讨论】:
-
正如我之前所说,重点是要遵守特定的顺序(alpha、beta、gamma 然后是 delta)。我认为'sort -k'不会解决这个问题。没有?
-
我现在更清楚地看到了你想要做什么,不幸的是,用普通的
sort真的不可能。使用awk可能是可能的,但最好的解决方案可能是创建一个程序(例如 Python)来进行排序。 -
实际上可以通过装饰、排序和取消装饰来完成。即根据行内容添加前缀(可以使用 sed 等来完成),根据前缀排序,然后剥离前缀(与添加它的方式相同)