Solaris + sort 명령을 사용하여 날짜 및 시간에 따라 파일 정렬

Solaris + sort 명령을 사용하여 날짜 및 시간에 따라 파일 정렬

일부 스크립트(Solaris 시스템)의 /var/tmp/file.txt에 생성된 목록이 있습니다. 다음 목록에는 4개의 필드가 있습니다.

다음 타임스탬프에 따라 목록을 정렬하는 방법에 대한 조언을 부탁드립니다(정렬 명령이나 awk 또는 sed와 같은 다른 솔라리스 명령을 사용하여 .....).

예를 들어 날짜 및 시간 15-10-2009 08:29:18은 15-10-2009 08:29:10 ... 등이어야 합니다.

file.txt의 예(정렬되지 않은 파일)

  PHONE_NUMBER         TIMESTAMP                   ID  TYPE
  -------------------- -------------------        ---- -------------- 
  972544111222         15-10-2009 08:29:18         20  sharp_gx10
  33633333333          24-09-2009 16:17:45         20  other_mm_phone
  841990000043         08-10-2009 09:04:38         60  other_mm_phone
  972541230001         08-10-2009 14:23:48         20  other_mm_phone

답변1

댓글에서 말했듯이 타임스탬프 형식으로 인해 접근 방식이 복잡해 보이지만 대부분 기계적인 반복입니다.

awk 'NR>2 {print $1"-"$2"-"$3"-"$4"-"$5}' file.txt |\
awk -F'-' '{print $4"-"$3"-"$2"-"$5"-"$1"-"$6"-"$7}' |\
sort |\
awk -F'-' '{print $5"\t"$1"-"$2"-"$3" "$4"\t"$6"\t"$7}'
  1. 처음 두 줄(헤더만)을 건너뛰고 나머지 줄을 단일 구분 기호(이 경우 대시, 마지막 필드에 표시할 수 없는지 확인)를 사용하도록 변환합니다(원래는 공백과 대시를 번갈아 사용합니다. 날짜 형식),
  2. 대시로 필드를 분할하고 날짜를 줄의 시작 부분으로 이동하고(사용하기 쉽도록 sort) 내림차순 형식으로 인쇄합니다.
  3. 정렬하고
  4. 입력과 유사한 형식으로 정보를 다시 인쇄합니다(교환 $1하고 $3이전 날짜 형식을 가져옴).

원하는 경우 나중에 헤더 줄을 다시 추가하세요.


편집하다: 역순 정렬을 원하신 것으로 확인되었습니다. sort으로 바꾸시면 됩니다 sort -r.

관련 정보