달력을 나타내는 이 파일이 있습니다. 각 파일에는 정확한 날짜와 시간이 포함되어 있으며 그 뒤에 이벤트 이름과 설명이 표시됩니다.
06-12-2016,12:00,gym,leg day
05-04-2018,12:09,gym,hands
09-08-2019,13:08,movies,horror
05-04-2019,14:07,gym,hands
23-03-2018,16:47,dance class
25-04-2019,13:29,dance class
05-12-2017,14:45,songwriting
올바른 순서로 정렬된 이벤트를 인쇄해야 합니다.
grep
사용해 보았는데 awk
제대로 작동하지 않습니다. 어떡해?
답변1
나는 가장 간단한 명령이 다음과 같다고 생각한다.
sort -t- -k3.1,3.4 -k2,2 file
이는 세 번째 필드의 4개 문자를 정렬하고 두 번째 필드를 정렬하여 관계를 해결합니다. 여전히 동점이 해결되지 않으면 첫 번째 필드부터 시작하는 다른 모든 필드를 비교하여 순서가 자동으로 결정됩니다.
모든 정렬은 알파벳순으로 수행되며 숫자는 양의 정수이므로 추가 숫자를 추가하는 것은 n
중요하지 않습니다.
테스트 샘플:
06-12-2016,12:00,gym,leg day
05-04-2018,12:09,gym,hands
09-08-2019,13:11,movies,horror
09-08-2019,13:09,movies,horror
09-08-2019,13:08,movies,horror
08-08-2019,13:09,movies,horror
05-04-2019,14:07,gym,hands
23-03-2018,16:47,dance class
25-04-2019,13:29,dance class
05-12-2017,14:45,songwriting
결과 정렬:
06-12-2016,12:00,gym,leg day
05-12-2017,14:45,songwriting
23-03-2018,16:47,dance class
05-04-2018,12:09,gym,hands
05-04-2019,14:07,gym,hands
25-04-2019,13:29,dance class
08-08-2019,13:09,movies,horror
09-08-2019,13:08,movies,horror
09-08-2019,13:09,movies,horror
09-08-2019,13:11,movies,horror
답변2
한 가지 방법은 모든 정렬 필드를 수동으로 선택하는 것입니다.
sort -t, -k 1.7,1.10n -k 1.4,1.5n -k 1.1,1.2n -k 2.1,2.2n -k 2.4,2.5n input
이렇게 하면 쉼표로 구분된 필드를 기준으로 행이 분할된 다음 연도, 월, 일, 시 및 분 위치를 사용하여 숫자로 정렬됩니다. 예제 출력:
06-12-2016,12:00,gym,leg day
05-12-2017,14:45,songwriting
23-03-2018,16:47,dance class
05-04-2018,12:09,gym,hands
05-04-2019,14:07,gym,hands
25-04-2019,13:29,dance class
09-08-2019,13:08,movies,horror