Solaris + 透過 sort 指令依照日期和時間對檔案進行排序

Solaris + 透過 sort 指令依照日期和時間對檔案進行排序

我有一個從某些腳本(在 Solaris 機器中)在 /var/tmp/file.txt 中建立的列表,以下列表有 4 個字段

請建議如何依照以下時間戳記對清單進行排序(透過排序指令或其他Solaris指令,如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取得舊的日期格式)。

如果需要的話,可以稍後新增標題行。


編輯:我看到你想要反向排序。只需更改sortsort -r.

相關內容