在 awk 中对哈希/数组进行排序

Posted

技术标签:

【中文标题】在 awk 中对哈希/数组进行排序【英文标题】:sorting hashes/arrays in awk 【发布时间】:2010-09-11 12:17:56 【问题描述】:

有没有一种简单的方法可以在 awk 中执行以下任何操作?

按数据排序数组/哈希 按字符串键对哈希进行排序

【问题讨论】:

这是一个本地 awk 快速排序的示例:en.literateprograms.org/Quicksort_(AWK) 抱歉,这个站点似乎没有任何通知,否则我会早点收到的。希望你能看到。 netlib.org/research/awkbookcode/ch7 这是 awk(以及更多)中插入排序的链接。 【参考方案1】:

这是其他人对一个非常相似的问题的回答: http://www.computing.net/answers/unix/urgent-help-with-sorting-in-awk/4442.html

应该是这样的:

gawk 'BEGIN c=1  array[c] = sprintf ("%s %s", $2, $1); c++  
END  asort(array); for (x=1;x<c;x++)  print array[x]  '

请注意,我使用了“gawk”。如果您想要内置排序,请使用 gawk。

该示例采用键值对的“空格分隔”输入并根据第二个值对它们进行排序(当然,它以值/键格式将它们打印出来,但你会看到我在那里做什么。)

为了对 gawk 中现有的数组执行此操作,您可以使用类似的东西。

如果使用 awk 或 mawk,您必须使用手册页中提供的众多排序功能之一来完成排序。

来自 gawk 联机帮助页: AWK 中的所有数组都是关联的,即由字符串值索引。 特殊运算符 in 可用于 if 或 while 语句,以查看数组是否具有由 a 组成的索引 特定的价值。 if(数组中的val) 打印数组[val] 如果数组有多个下标,则在数组中使用(i, j)。

【讨论】:

这花了我一点时间,我以前做过类似的事情,但那是很久以前的事了。有趣的部分是通过正则表达式分离输入,然后对其进行排序。

以上是关于在 awk 中对哈希/数组进行排序的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中对协议数组进行排序?

在Javascript中对地址数组进行排序[重复]

如何在Vue中对对象数组进行排序和过滤

PowerShell对象排序(结合哈希表)

如何在 Swift 5 中对数组的数组进行排序 [关闭]

在 TensorFlow 中对数组进行排序