awk 桶中的直方图

Ami*_*mir 1 awk grouping

考虑我有以下文件..

1 a
1 b
1 a
1 c
1 a
2 a
2 d
2 a
2 d
Run Code Online (Sandbox Code Playgroud)

我想在桶内有一个直方图...例如,如果桶是 1 那么输出将是

a 3
b 1
c 1
a 2
d 2
Run Code Online (Sandbox Code Playgroud)

对于桶 2...我们有

a 5
b 1
c 1
d 2
Run Code Online (Sandbox Code Playgroud)

我想用 awk 来做,但我真的卡住了......这是我的代码:

awk '
    {A[$1]} count [$2]++ 
    {for(i in A) {print i,A[i]}
    }' test
Run Code Online (Sandbox Code Playgroud)

有什么帮助吗?

谢谢,

阿米尔。

Jac*_*ers 5

编辑添加 size_of_bucket 变量。

awk -v "size_of_bucket=2" '
  {
    bucket = int(($1-1)/size_of_bucket);
    A[bucket","$2]++;
  }
  END {
    for (i in A) {
      print i, A[i];
    }
  }
'
Run Code Online (Sandbox Code Playgroud)

  • 我将存储桶大小变量移至 awk 选项并删除了 BEGIN 块——您不需要预定义数组,只需开始使用它即可。 (2认同)