使用自定义排序顺序在Unix中对字母数字字符串进行排序

丹尼尔

我有一个名称列表,这些名称不正确。如何使用字母部分自定义排序顺序以正确的字母数字顺序获取它们

我的档案numbers.txt

alpha-1
beta-3
alpha-10
beta-5
alpha-5
beta-1
gamma-7
gamma-1
delta-10
delta-2

要点是我的脚本应该认识到它应该alpha在之前betabeta之前gammagamma之前打印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,但它不符合我的需求。

mklement0

您可以使用以下辅助awk命令:

awk -F- -v keysInOrder="alpha,beta,gamma,delta" '
    BEGIN {
        split(keysInOrder, a, ",")
        for (i = 1; i <= length(a); ++i) keysToOrdinal[a[i]] = i
    }
    { print keysToOrdinal[$1] "-" $0 }
' numbers.txt | sort -t- -k1,1n -k3,3n | cut -d- -f2-
  • awk命令用于:

    • 将自定义键映射到反映所需排序顺序的数字上;请注意,键的完整列表必须按keysInOrder顺序通过variable传递

    • 也将数字作为辅助列添加到输入的前面,也要使用分隔符-例如,beta-3成为2-beta-3,因为beta它在排序键的有序列表中的位置2中。

  • sort然后awk根据映射的数字以及第二列中的原始数字对输出进行排序,从而得出所需的自定义排序顺序。

  • cut然后删除辅助。再次映射数字。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

按字符串和字母数字对自定义对象进行排序

如何对字母数字字符串进行排序

使用Javascript如何从字母数字字符串中获取排序顺序数组中的数字

Objective-c 按正确顺序使用字母数字字符串对 NSArray 进行排序

根据Python中的自定义字母对字符串值进行排序

使用自定义顺序对字符串数组进行排序

根据子列表中的字母数字字符串对列表列表进行自然排序?

如何在JavaScript中对包含字母和数字字符串的数组进行排序

如何自定义Collections.sort()以按字符串的数字前缀顺序对其进行排序

使用`sort`对数字字符串进行排序

在字符串中按字母顺序对字符进行排序

使用对象中包含的字符串对自定义对象列表进行排序

如何在MongoDB中通过对字母数字字符串进行排序来查找最高数字

通过数字部分对字母数字字符串进行排序的SQL

JS 通过结尾数字对字母数字字符串数组进行排序?

如何根据字符串索引上的自定义顺序对熊猫数据框进行排序

如何使用postgresql对字符串进行自定义排序的查询排序?

C ++:如何按数字顺序对数字字符串向量进行排序?

python对负和/或十进制字母数字字符串进行排序

用尾随零对字母数字字符串进行排序

使用字母数字值对Java中的自定义对象列表进行排序

按字母顺序,数字顺序和特殊字符对字符串数组进行排序

ElasticSearch-定义自定义字母顺序进行排序

使用存储在另一个列表中的自定义顺序对字符串列表进行排序

自定义字符串排序

按字母数字字符串MS SQL Server 2012中的相似性排序

如何在oracle中对字母数字字符串排序?

Java:对数字字符串数组进行排序

先对数字进行排序,然后对字符串数组中的字母进行排序