AWK - 如何计算数组上的存储或索引

AWK - 如何计算数组上的存储或索引

我有需要计算出现次数的数据。

1
2
1
2
3
1

并使用下面的 awk 命令并正常工作。

awk -F'","' '{ a[$1]++ } END { for (n in a) print n "=" a[n] } ' text.txt

和输出:

2=2
3=1
1=3

另一个问题是它需要计算数组中存储了多少个。期望我还需要计算上面输出的行数。预期输出:3

答案1

在 GNU 中awklength(my_arry)将显示您关联的元素数量my_arry已采取。

在不支持数组长度的其他实现中,您可以执行以下操作:

awk '{ … } END{ for (elements in my_arry) count++; print count }'

答案2

使用命令

awk '{a[$1]++}  END { for ( n in a ) { i++; print n "=" a[n]} print i }' file

例如


#!/bin/bash
echo '1
2
1
4
5
4' | awk '{a[$1]++}  END { for ( n in a ) { i++; print n "=" a[n]} print i }'

输出将是

1=2
2=1
4=2
5=1
4

答案3

通过下面的方法完成

命令:awk '{a[$1]++}END{for(x in a)print a[x]"="x}' filename

command: @praveen:~$ awk '{a[$1]++}END{for(x in a)print a[x]"="x}' p.txt
3=1
2=2
1=3
praveen@praveen:~$

相关内容