내 입력 파일은 다음과 같습니다.
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]} }'