특정 열에 몇 개의 고유 값이 있는지 찾기 위해 정렬

특정 열에 몇 개의 고유 값이 있는지 찾기 위해 정렬

예를 들어 list.txt입니다.

Joe 3
Jack 1
Ulysses 6
Fox 2
Cassidy 1
Jones 6
Kevin 7

5그러면 두 번째 열에 5개의 서로 다른 값이 있으므로 출력이 나와야 합니다 .

just를 사용하여 이를 어떻게 수행해야 합니까 sort cut wc uniq?

sort -k2n먼저 두 번째 열을 오름차순으로 정렬하는 아이디어가 있습니다 uniq.

Cassidy 1
Fox 2
Joe 3
Jones 6
Kevin 7

그런 다음 cut -d ' ' -f2모든 숫자를 나열한 1 2 3 6 7 다음 wc -d반환될 고유 값의 수를 계산 하는 데 사용합니다 5.

uniq동일한 번호의 중복 행을 제거하려면 섹션에서 무엇을 해야 합니까 ?

이것을 달성하는 쉬운 방법이 있습니까?

답변1

cut열 2의 고유성에만 관심이 있으므로 다음부터 시작하겠습니다 .

cut -d' ' list.txt

결과 :

1
2
1
3
6
7
6

이제 고유한 값을 원하면 uniq가 이를 수행하지만 정렬된 경우에만 가능합니다. 정렬하려면 -u 플래그를 사용하여 정렬하세요.

cut -d' ' -f2 list.txt | sort -u

결과 :

1
2
3
6
7

wc이제 다음을 사용하여 출력 행 수를 계산할 수 있습니다 .

cut -d' ' -f2 list.txt | sort -u  | wc -l

이는 다음을 제공합니다.

5

우리는 list.txt 파일의 특정 형식을 사용합니다. 사람 이름에는 공백이 없습니다!

답변2

나는 다음을 선택할 것이다:

sort -k2,2 -u names | wc -l
5

이 콘텐츠는 어디에서 names찾을 수 있나요?

cat names
Joe 3
Jack 1
Ulysses 6
Fox 2
Cassidy 1
Jones 6
Kevin 7

답변3

를 사용해야 하기 때문에 -sort -cut -wc -uniq필요한 명령줄은 다음과 같아야 합니다.

$ cut -d' ' -f2 file.txt | sort -n | uniq | wc -l
5

관련 정보