在文件的每一列上添加1-10分钟,文件的n次数



我有一个时间文件

time.log

12:30
13:10
16:00

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

output.log

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

这是尴尬中的一个:

$ 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
...

在这里,我写的一件我甚至比这更了解。: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

另一个没有系统调用的awk

awk -F: '{for(i=0;i<=10;i++) 
             printf "%02d:%02dn", ($1+int($2/60))%24, ($2++)%60}' file

相关内容

  • 没有找到相关文章

最新更新