在 awk 中对散列/数组进行排序

发布于 2024-07-05 07:09:07 字数 92 浏览 3 评论 0原文

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

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

Is there an easy way to do any of the following things in awk?

  • Sorting array/hash by it's data
  • Sorting a hash by it's string key

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

欢你一世 2024-07-12 07:09:07

这是其他人对非常相似问题的回答:
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 语句中来查看数组是否具有由
特别的价值。
if(数组中的 val)
打印数组[值]
如果数组有多个下标,则在数组中使用(i,j)。

Here's someone else's answer to a very similar problem:
http://www.computing.net/answers/unix/urgent-help-with-sorting-in-awk/4442.html

Which is supposed to be something like this:

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

Note that I used 'gawk'. If you want built-in sorting, use gawk.

That example takes a 'space-separated' input of key value pairs and sorts them based on the second value (of course it prints them out in value/key format, but you see what I'm doing there.)

In order to do that to an array extant in gawk, you'd use something similar.

If using awk or mawk, you'll have to use one of the many sort functions available in man pages to accomplish the sort.

From the gawk manpage:
All arrays in AWK are associative, i.e. indexed by string values.
The special operator in may be used in an if or while statement to see if an array has an index consisting of a
particular value.
if (val in array)
print array[val]
If the array has multiple subscripts, use (i, j) in array.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文