awk - 상위 3개 기준으로 그룹화

awk - 상위 3개 기준으로 그룹화

데이터는 다음 형식입니다.

South,London,5
South,Greenwich,7
South,Guildford,2
South,Maidstone,3
South,Oxted,4
North,Manchester,10
North,Leeds,7
North,Grimsby,9
North,Halifax,11
Midlands,Birmingham,16
Midlands,Coventry,10
Midlands,Walsall,15
Midlands,Rutland,1

두 번째 열을 기준으로 그룹화하기 위해 레코드를 필터링하고 내보내려면 AWK 프로그램이 필요하지만 처음 세 값만 인쇄합니다.

South,Greenwich,7
South,London,5
South,Oxted,4
North,Halifax,11
North,Manchester,10
North,Grimsby,9
Midlands,Birmingham,16
Midlands,Walsall,15
Midlands,Coventry,10

실제 파일에는 더 많은 지역/도시가 있습니다. 도움이 필요하신가요?

답변1

먼저 sort명령을 사용하여 정렬한 다음 다음을 사용하여 awk각 범주의 상위 3개를 필터링 할 수 있습니다 $1.

sort -t, -k1,1 -k3,3nr file | awk -F, 'n[$1]++<3'

산출:

Midlands,Birmingham,16
Midlands,Walsall,15
Midlands,Coventry,10
North,Halifax,11
North,Manchester,10
North,Grimsby,9
South,Greenwich,7
South,London,5
South,Oxted,4

관련 정보