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

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

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

【问题讨论】:

标签: arrays hash sorting 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)。

【讨论】:

  • 这花了我一点时间,我以前做过类似的事情,但那是很久以前的事了。有趣的部分是通过正则表达式分离输入,然后对其进行排序。
猜你喜欢
  • 2019-04-25
  • 1970-01-01
  • 2012-01-21
  • 1970-01-01
  • 2014-03-05
  • 1970-01-01
  • 2011-03-10
  • 2015-04-08
相关资源
最近更新 更多