我有一个时间文件
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