我的输入文件如下所示:
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]} }'