linux - awk 仅在 uniq 列中打印行数

标签 linux bash shell awk

我有这样的数据集:

1 A
1 B
1 C
2 A
2 B
2 C
3 B
3 C

我有一个计算我的脚本:

  1. 搜索字符串出现的次数

  2. 行数

    awk -v search="A" \
       'BEGIN{count=0} $2 == search {count++} END{print count "\n" NR}' input
    

这很好用。

我想在我的 awk 中添加第一列中唯一行的行数。

所以输出应该用\n分隔:

2
8
3

我可以在单独的 awk 代码中执行此操作,但我无法将它集成到我原来的 awk 代码中。

awk '{a[$1]++}END{for(i in a){print i}}' input  | wc -l 

知道如何在没有管道的情况下将它集成到一个 awk 解决方案中吗?

最佳答案

看起来你想要这个:

awk -v search="A" '{a[$1]++} 
                   $2 == search {count++}
                   END{OFS="\n";print count+0, NR, length(a)}' file

关于linux - awk 仅在 uniq 列中打印行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45352731/

相关文章:

linux - 在 bash 中读取 CSV 文件

bash - 如何使 GETOPTS 选项字符串选项区分大小写?

bash - 将文本文件中的行分组并将相应的行聚合到列

linux - 为什么 (( s )) 进行变量查找,而不是 [[ s ]]?

linux - "cannot execute binary file"尝试在 linux 上运行 shell 脚本时

linux - 如何在 Vim 中突出显示 Bash 脚本?

linux - 与本地 .config 文件同步困难

linux - 在 IPython 中安装 lisp 内核

linux - 防止 Gnome 终端在执行后退出

linux - 如何使用 commhe 和 line 为 whiptail 提供输入