计算列中连续相同的字段数

计算列中连续相同的字段数

我的输入文件如下所示:

bio, john
chem, john
lang, john
math, dina
math, john
math, matt
lang, matt

我只想对名称连续相同的行进行一次计数。对于这个输入,我想得到:

john 2
dina 1
matt 1

有什么办法可以使用 sed 或 awk 来做到这一点吗?我完全迷失在这里了。

答案1

如果你想要快速而肮脏的东西,你可以使用uniq去重复的连续条目,然后排序+计算重复项:

$ cut -d, -f2 file | uniq | sort | uniq -c
      1  dina
      2  john
      1  matt

答案2

将先前的值存储在变量中,如果值不同,则增加关联数组中的数字。

awk -F ', ' '{if ($2 != p) { c[$2]++ } p=$2}
             END { for (k in c) {print k, c[k]} }'

相关内容