-2

我有一个像这样的时间文件

时间日志

12:30
13:10
16:00

我想以这种方式重定向这个文件

输出日志

12:31
12:32
12:33
12:34
12:35
12:36
12:37
12:38
12:39
12:40
12:41
13:10
13:11
13:12
13:13
13:14
13:15
13:16
13:17
13:18
13:19
13:20
16:00
16:01
16:02
16:03
16:04
16:05
16:06
16:07
16:08
16:09
16:10
4

2 回答 2

1

另一个awk没有系统调用

awk -F: '{for(i=0;i<=10;i++) 
             printf "%02d:%02d\n", ($1+int($2/60))%24, ($2++)%60}' file
于 2017-04-27T17:17:39.023 回答
1

这是awk中的一个:

$ awk '
{
    for(i=0;i<=10;i++) {
        c="date -d \"" $1 " " i " minute\" +\"%H:%M\""
        system(c)
        close(c)
    }
}' file
12:30
12:31
12:32
12:33
...

在这里,我在 bash 中写了一个片段,即使我比这更清楚。:D 请不要引用我的那个。

$ while IFS= read -r line; do for j in {0..10}; do k="$i $j minute"; date -d "$k" +"%H:%M" ; done ; done < file
12:30
12:31
12:32
12:33

解释:

while IFS= read -r line                                   # thanks @Sundeep
# for i in $(cat foo)          # for good old times sake, # I stand corrected
do
    for j in {0..10}           # add 0 to 10 to the time
    do
        k="$i $j minute"       # form the string for date
        date -d "$k" +"%H:%M"  # magic
    done
done < file
于 2017-04-27T15:09:43.493 回答