如何使用awk从clock命令(对于crontab)切换小时和分钟的位置

时间:2012-05-09 05:32:01

标签: bash sorting awk

我想使用命令制作一个播放闹钟的crontab(对我的妻子来说)。该程序名为ipraytime,它提供了这样的输出。

$ ipraytime -u +2

Prayer schedule for,
City             : Custom
Latitude         : 021�� 25' 12" N
Longitude        : 039�� 49' 47" E
Angle Method     : Umm Al-Qurra University
TimeZone         : UTC+2.0
Qibla            : 061�� 45' 42" W of true North

     Date         Fajr    Shorooq   Zuhr     Asr    Maghrib   Isha 
--------------------------------------------------------------------
[09-05-2012]     4:19     5:43    12:16    15:35    18:48    20:18

Today's Imsaak    :   4:11
Tomorrow's Imsaak :   4:10
Tomorrow's Fajr   :   4:18

我想要的是crontab的时间格式,这意味着我需要切换分钟和小时的位置。改为19 4

我已经制作了这个命令,但不知道如何进行切换。

ipraytime -u +2| awk 'NR==12 {print $2"\n"$3"\n"$4"\n"$5"\n"$6"\n"$7}' | sed 's/:/ /g'

这给了我这样的输出

4 19
5 43
12 16
15 35
18 48
20 18

但我希望它像这样

19 4
43 5
16 12
35 15
48 18
18 20

因为这是crontab正在使用的。我和sort玩了一下但是找不到解决办法。

(抱歉这个坏主题..不知道如何为此写一篇好文章)

2 个答案:

答案 0 :(得分:2)

根本没有必要使用sed

$ ipraytime -u +2 | awk -F ' +|:' 'NR == 12 {for (i = 2; i <= 12; i += 2) print $(i+1), $i}'
19 4
43 5
16 12
35 15
48 18
18 20

答案 1 :(得分:1)

使用sed 's/\(.*\):\(.*\)/\2 \1/'

命令:

ipraytime -u +2 | awk 'NR==12 {print $2"\n"$3"\n"$4"\n"$5"\n"$6"\n"$7}' 
 | sed 's/\(.*\):\(.*\)/\2 \1/'