Text-Processing

計算列中連續相同的欄位數

  • September 26, 2019

我的輸入文件如下所示:

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

我想只計算一次名稱連續相同的行。對於這個輸入,我想得到:

john 2
dina 1
matt 1

有什麼方法可以使用 sed 或 awk 做到這一點?我完全迷失在這裡。

將前一個值儲存在變數中,如果值不同,則遞增關聯數組中的數字。

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

如果你想要一些快速的’n’dirty,你可以使用uniq去重複連續條目,然後排序+計數重複:

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

引用自:https://unix.stackexchange.com/questions/543821