unix - awk/Unix group by

标签 unix awk

有这个文本文件:

name, age
joe,42
jim,20
bob,15
mike,24
mike,15
mike,54
bob,21

试图得到这个(计数):
joe 1
jim 1
bob 2
mike 3

谢谢,

最佳答案

$ awk -F, 'NR>1{arr[$1]++}END{for (a in arr) print a, arr[a]}' file.txt
joe 1
jim 1
mike 3
bob 2

说明
  • -F, split 于 ,
  • NR>1处理第 1 行之后的行
  • arr[$1]++增量数组 arr (用 , 分割)第一列作为键
  • END{}在处理文件
  • 结束时执行块
  • for (a in arr)迭代 arra key
  • print a打印 key , arr[a]带有 a 的数组 key
  • 关于unix - awk/Unix group by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14916826/

    相关文章:

    bash - 根据特定条件从文件中分配 BASH 变量

    awk - 使用 awk 的 header 版本

    linux - sendmail - 具有相同的发件人和收件人主机名

    unix - 如何为集成测试配置 sendmail?

    shell - 使用 shell 拆分数据

    regex - 如何使用 awk 重复一行?

    linux - awk/gawk asorti() 问题

    linux - 管道如何工作?

    awk - 给定主机名,从 ~/.ssh/config 获取主机

    linux - 如何使用 awk(或 cut)从管道分隔文件中打印每行的最后一个字段?