열의 연속된 동일한 필드 수 계산

열의 연속된 동일한 필드 수 계산

내 입력 파일은 다음과 같습니다.

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]} }'

관련 정보