Prawdopodobnie proste rozwiązanie, które zgubiłem. Jak mogę uzyskać dane wyjściowe atq
posortowane chronologicznie, dzięki czemu mogę łatwo zobaczyć, kto ma zostać uruchomiony w następnej kolejności? man
Aktualizacja sort
nie ma nic wbudowaną rozpoznawania znaczników czasu tak:
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
nie zadziałałby też przy skoku identyfikatora pracy.
date
może zrobić. Z--date=STRING
param i+\%Y-\%m-\%d_\%H-\%M-\%S
Odpowiedzi:
Zakładając, że jesteś w systemie Linux, wyjście
atq
zawsze ma datę w tym samym formacie. Posortuj pola w odpowiedniej kolejności, zwracając uwagę na to, które z nich są liczbami lub nazwami miesięcy. Pamiętaj, aby używać nazw narodowych w języku angielskim dla nazw miesięcy, ponieważ tego właśnieatq
używa.źródło
sort
Komenda może to zrobić, ale niestety, nie można używać--month-sort
i--numeric-sort
razem. Więc użyj:Spowoduje to konwersję skrótów miesiąca na ich wartości liczbowe, a następnie sortowanie według roku (
-k6,6
), a następnie miesiąca i dnia (-k3,4
). Dane wyjściowe nie będą miały nazw miesięcy, ale jeśli naprawdę tego chcesz, możesz przekonwertować je z innymsed
.Zauważ, że
s/12/Dec/
musi to nastąpić wcześniejs/1/Jan/
.źródło
date
polecenie ma specjalne właściwości analizujące znaczniki czasu, które mogą uprościć to, gdy zostaną podane odpowiednie pola, np. zcut
.-k
opcji:-k 3M
i tak dalej.Wygląda na skomplikowane, ale działa to również:
W porównaniu z innymi sugestiami podoba mi się sposób, w jaki pozostawiono rzeczywistą analizę,
date
która rozpoznaje tekstowy znacznik czasu, dzięki czemu można sformatować wszystko, co chcesz, dzięki czemu filtrowanie lub sortowanie jest dziecinnie proste.Możesz przyczepić się
|column -t
na końcu, aby ładnie wyrównać i rozmieścić pola.źródło
bash readline
zamiastawk