데이터는 다음 형식입니다.
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