2

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

  • 按数据对数组/哈希进行排序
  • 通过它的字符串键对哈希进行排序
4

1 回答 1

3

这是其他人对非常相似的问题的回答: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 in array) print array[val] 如果数组有多个下标,则在数组中使用 (i, j)。

于 2008-09-20T00:05:30.980 回答