【发布时间】:2016-09-10 13:25:31
【问题描述】:
我正在编写 awk 程序,程序需要对“关联数组”进行排序
{
subj[$1]++
}
END{
n=asorti(subj, sorted)
for(k=1;k<=n;k++)
{
print(k" "sorted[k])
}
}
使用下面的 cmd 执行时
$ awk -f prg.awk "subjects"
给出以下错误:
awk: 函数 asorti 从未定义
[输入文件]
Phy
Math
Math
Science
Bio
Phy
操作系统:ubuntu 16.04
异常的o/p
Bio 1
Math 2
Phy 2
Science 1
【问题讨论】:
-
你使用的是哪个 awk?
-
@JamesBrown Awk 4.1.3
-
不要使用
print(foo" "bar)。print是 awk 中的运算符,而不是函数。不需要括号。你可以给它多个用逗号分隔的参数。它们的值以OFS(输出字段分隔符)在它们之间打印,默认情况下是一个空格,最后是ORS(输出记录分隔符),默认情况下是换行符。所以,print k, sorted[k]是惯用的。
标签: bash awk ubuntu-16.04