Date
按時間順序排列工作
可能是我放錯地方的簡單解決方案。如何獲得
atq
按時間順序排序的輸出,以便我可以輕鬆查看下一個要執行的人?man
頁面sort
沒有內置任何東西來辨識時間戳,如下所示:atq 1264 Sat Mar 24 15:03:00 2012 a master 1445 Sat Mar 24 20:28:00 2012 a master 1548 Sun Mar 25 15:09:00 2012 a master 1193 Sat Mar 24 11:03:00 2012 a master 1359 Sat Mar 24 17:13:00 2012 a master 1726 Mon Mar 26 21:24:00 2012 a master 1736 Mon Mar 26 22:04:00 2012 a master 1748 Mon Mar 26 22:46:00 2012 a master 1704 Mon Mar 26 20:19:00 2012 a master 1288 Sat Mar 24 15:38:00 2012 a master 1532 Sun Mar 25 11:53:00 2012 a master
atq |sort
在工作 ID 跳來跳去時也不會工作。
假設您使用的是 Linux,則輸出
atq
的日期始終具有相同的格式。以適當的順序對欄位進行排序,注意聲明哪些是數字或月份名稱。確保對月份名稱使用英語語言環境,因為這是atq
使用的。atq | sort -k 6n -k 3M -k 4n -k 5 -k 7 -k 1 # year month day time queue id
該
sort
命令可以做到,但不幸的是,您不能將--month-sort
and--numeric-sort
一起使用。所以使用:$ atq | sed 's/Jan/1/;s/Feb/2/;s/Mar/3/;s/Apr/4/;s/May/5/;s/Jun/6/;s/Jul/7/;s/Aug/8/;s/Sep/9/;s/Oct/10/;s/Nov/11/;s/Dec/12/' | sort -n -k6,6 -k3,4
這會將月份縮寫轉換為其數值,然後首先按年份 (
-k6,6
) 排序,然後是月份和日期 (-k3,4
)。輸出不會有月份名稱,但如果你真的想要,你可以用另一個sed
.$ atq | sed 's/Jan/1/;s/Feb/2/;s/Mar/3/;s/Apr/4/;s/May/5/;s/Jun/6/;s/Jul/7/;s/Aug/8/;s/Sep/9/;s/Oct/10/;s/Nov/11/;s/Dec/12/' | sort -n -k6,6 -k3,4 | sed 'h;s/^[0-9][0-9]* *[A-Z][a-z][a-z] *\([0-9][0-9]*\).*/\1/;s/10/Oct/;s/11/Nov/;s/12/Dec/;s/1/Jan/;s/2/Feb/;s/3/Mar/;s/4/Apr/;s/5/May/;s/6/Jun/;s/7/Jul/;s/8/Aug/;s/9/Sep/;G;s/^\(.*\)\n\([0-9][0-9]* *[A-Z][a-z][a-z] *\)[0-9][0-9]*\( .*\)/\2\1\3/'
注意
s/12/Dec/
需要放在前面s/1/Jan/
。