아마도 내가 놓은 간단한 해결책 일 것입니다. 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
와 --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/
합니다.
답변
복잡해 보이지만 작동합니다.
atq |awk '{system("echo "$1 " $(date +%Y-%m-%d_%H-%M-%S \
--date \""$2" "$3" "$4" "$5" "$6"\") "$7" "$8 )}' |sort -k2
469 2012-03-24_01-30-00 a master
655 2012-03-24_02-03-00 a master
671 2012-03-24_02-04-00 a master
657 2012-03-24_02-09-00 a master
673 2012-03-24_02-11-00 a master
537 2012-03-25_00-38-00 a master
539 2012-03-25_00-43-00 a master
652 2012-03-27_12-57-00 a master
654 2012-03-27_13-03-00 a master
656 2012-03-27_13-09-00 a master
다른 제안과 비교하여 실제 파싱이 date
텍스트 타임 스탬프를 이해하는 방식을 좋아 하므로 나중에 필터링하거나 정렬하기가 쉬운 원하는 형식으로 다시 포맷 할 수 있습니다.
|column -t
마지막 에 a 를 쳐서 필드를 잘 정렬하고 간격을 맞출 수 있습니다.