【发布时间】:2016-04-15 23:58:41
【问题描述】:
我想查找给定一组日期的连续范围
给出以下示例
2016-01-01
2016-01-02
2016-01-03
2016-01-04
2016-01-05
2016-01-06
2016-01-08
2016-01-09
2016-01-10
2016-01-11
2016-01-12
2016-01-15
2016-01-16
2016-01-17
2016-01-20
2016-01-21
2016-01-30
2016-01-31
2016-02-01
我希望得到以下结果
2016-01-01-2016-01-06
2016-01-08-2016-01-12
2016-01-15-2016-01-17
2016-01-20-2016-01-21
2016-01-30-2016-01-31
2016-02-01-2016-02-01
我已经遇到过this 问题,这几乎与我想要的相反,但使用的是整数。 我制定了以下适用于整数的内容。
awk 'NR==1 {l=$1; n=$1} {if ($1==n){n=$1+1} else{print l"-"n-1; l=$1 ;n=$1+1} } END {print l"-"$1}' file.txt
【问题讨论】:
-
hmmm 即使你做到了,你还有一个问题要解决,如果这个月有 30 天呢?最后一天(所以是第 30 天)也会被打印出来,因为人们认为下一天在文本中不存在。另外,如果一个月有 29 或 31 天怎么办,为了完成这项工作,您必须“告诉”脚本哪个月有多少天,以便它知道什么时候不打印该月的最后一天。
-
如果我们越过了一个月的界限,就可以开始一个新的范围。我已经更新了示例和结果以反映这一点。此外,如果日期可以转换为序数值,这将不是问题