입력하다
aaaaa|bbbbb|ccccc|ddddd|5|5|4
aaaaa|bbbbb|ccccc|ddddd|10|10|1
wwwww|xxxxx|yyyyy|zzzzz|5|5|2
wwwww|xxxxx|yyyyy|zzzzz|10|10|2
산출
aaaaa|bbbbb|ccccc|ddddd|5|5|
wwwww|xxxxx|yyyyy|zzzzz|10|10|
인덱싱에 사용되는 것은 다음과 같습니다.
열 1~4(예: aaaaa|bbbbb|ccccc|ddddd)
출력 논리는 다음과 같습니다.
동일한 인덱스를 가진 레코드의 마지막 열을 비교하여 마지막 열 값이 높은 레코드가 출력에 인쇄됩니다.
마지막 열의 동일한 인덱스를 가진 레코드를 비교하여 같으면 5열과 6열의 값이 더 큰 레코드를 출력한다.
답변1
sort
간단히 ing 을 사용하고 각 그룹의 첫 번째 항목을 선택하면 됩니다 .
sort filename -t'|' -k1,4 -k7rn -k5,6rn | sort -t'|' -k1,4 -u
결과:
aaaaa|bbbbb|ccccc|ddddd|5|5|4
wwwww|xxxxx|yyyyy|zzzzz|10|10|2
이것은 무엇을 위한 것인가?
-t'|'
필드 구분 기호를 다음으로 설정하세요.|
-k1,4
처음 4개 필드를 기준으로 정렬-k7rn
그런 다음 일곱 번째 필드를 통해 역방향 및 수치 비교를 수행합니다.-k5,6rn
그러면 다섯 번째, 여섯 번째 게임도 마찬가지다.|
다른 유형으로 전달-k1,4 -u
-u
처음 4개 필드의 고유성을 나타냅니다 .
따라서 전체 작업은 원하는 행이 처음 4개 필드 그룹에서 먼저 나타나도록 원하는 방식으로 파일을 정렬하는 것과 같습니다. 그런 다음 각 그룹의 첫 번째 행을 가져옵니다.