![使用 awk 根据时间范围打印文件范围?](https://linux22.com/image/26685/%E4%BD%BF%E7%94%A8%20awk%20%E6%A0%B9%E6%8D%AE%E6%97%B6%E9%97%B4%E8%8C%83%E5%9B%B4%E6%89%93%E5%8D%B0%E6%96%87%E4%BB%B6%E8%8C%83%E5%9B%B4%EF%BC%9F.png)
我已经做了一些简单的事情,awk
但我找不到方法来做到这一点!我有一个文本文件,其中包含以年份、儒略日期和时间命名的条目,如下所示:
blah_2012251_130500_blah
blah_2012251_131000_blah
blah_2012251_131500_blah
...
blah_2012253_063000_blah
我正在尝试找到一种方法来创建一个仅包含特定时间范围内的条目的新文件。例如,2012 年第 251 天下午 2:02 (140200) 到 2012 年第 252 天早上 6:07 (060700) 应包含跨越时间的文件:
blah_2012251_140000_blah
blah_2012251_140500_blah
...
blah_2012252_060500_blah
blah_2012252_061000_blah
此外,文件并不总是像本示例中那样每 5 分钟增加一次,因此它需要是一个开放范围。
答案1
以下内容应该有效..根据需要调整字段序号 2 和 3
awk -F'_' 'int($2""$3) > 2012252140600 && int($2""$3) < 2012252180700' filename
答案2
f1 和 f2 是开始日期和时间,l1 和 l2 是结束日期和时间:
awk -F_ -v f1="2012251" -v f2="140200" -v l1="2012252" -v l2="060700" '($2==f1 && $3>=f2) || ($2==l1 && $3<=l2) || ($2>f1 && $2<l1)' file