小编Phi*_*hil的帖子

使用AWK对关联数组进行排序

这是我的数组(gawk脚本):

myArray["peter"] = 32
myArray["bob"] = 5
myArray["john"] = 463
myArray["jack"] = 11
Run Code Online (Sandbox Code Playgroud)

排序后,我需要以下结果:

bob    5
jack   11
peter  32
john   463
Run Code Online (Sandbox Code Playgroud)

当我使用"asort"时,索引会丢失.如何按数组值排序而不丢失索引?(我需要根据它们的值排序索引)

(我需要仅使用awk/gawk获取此结果,而不是shell脚本,perl等)

如果我的帖子不够清楚,这里有另一篇文章解释同一个问题:http://www.experts-exchange.com/Programming/Languages/Scripting/Shell/Q_26626841.html)

提前致谢

更新:

多亏了你们两个,但我需要按值排序,而不是索引(我希望根据它们的值排序索引).

换句话说,我需要这个结果:

bob    5
jack   11
peter  32
john   463
Run Code Online (Sandbox Code Playgroud)

不是:

bob 5
jack 11
john 463
peter 32
Run Code Online (Sandbox Code Playgroud)

(我同意,我的例子令人困惑,选择的价值非常糟糕)

从Catcall的代码中,我编写了一个可行的快速实现,但它相当难看(我在排序和分割之前将键和值连接在一起).这是它的样子:

function qsort(A, left, right,   i, last) {
  if (left >= right)
    return
  swap(A, left, left+int((right-left+1)*rand()))
  last = left
  for (i = left+1; i <= right; i++)
    if (getPart(A[i], …
Run Code Online (Sandbox Code Playgroud)

awk gawk asort

14
推荐指数
3
解决办法
1万
查看次数

标签 统计

asort ×1

awk ×1

gawk ×1