일부 스크립트(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}'
- 처음 두 줄(헤더만)을 건너뛰고 나머지 줄을 단일 구분 기호(이 경우 대시, 마지막 필드에 표시할 수 없는지 확인)를 사용하도록 변환합니다(원래는 공백과 대시를 번갈아 사용합니다. 날짜 형식),
- 대시로 필드를 분할하고 날짜를 줄의 시작 부분으로 이동하고(사용하기 쉽도록
sort
) 내림차순 형식으로 인쇄합니다. - 정렬하고
- 입력과 유사한 형식으로 정보를 다시 인쇄합니다(교환
$1
하고$3
이전 날짜 형식을 가져옴).
원하는 경우 나중에 헤더 줄을 다시 추가하세요.
편집하다: 역순 정렬을 원하신 것으로 확인되었습니다. sort
으로 바꾸시면 됩니다 sort -r
.