Awk/Unix group by

have this text file:

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

Trying to get this (count):

joe 1
jim 1
bob 2
mike 3

Thanks,



$ 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

EXPLANATIONS

  • -F, splits on ,
  • NR>1 treat lines after line 1
  • arr[$1]++ increment array arr (split with ,) with first column as key
  • END{} block is executed @ the end of processing the file
  • for (a in arr) iterating over arr with a key
  • print a print key , arr[a] and value a of array arr

猜你喜欢

转载自blog.csdn.net/gong_xucheng/article/details/79689081