0

我想使用一个命令来制作一个播放警报的 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了一点,但也找不到解决方案。

(对不起,不好的话题..不知道如何为此写一个好的)

4

2 回答 2

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
于 2012-05-09T09:03:58.870 回答
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/'
于 2012-05-09T05:35:43.047 回答