Linux文件获取具有匹配特定日期时间范围的列的行

时间:2017-09-21 07:03:23

标签: linux shell

如何获取与日期时间范围匹配的行。例如,在2017-09-08 00:00:00和2017-09-09 00:00:00之间获取所有行。分隔符是空格。

文件:

2017-09-07 19:00:01 a
2017-09-08 20:00:01 a
2017-09-08 21:00:03 a
2017-09-10 19:00:01 a

输出:

2017-09-08 20:00:01 a
2017-09-08 21:00:03 a

1 个答案:

答案 0 :(得分:4)

awk '$1FS$2> "2017-09-08 00:00:00"  && $1FS$2 <"2017-09-09 00:00:00"' inputfile
2017-09-08 20:00:01 a
2017-09-08 21:00:03 a

或者您可以将时间存储在变量中:

awk -v start="2017-09-08 00:00:00" -v end="2017-09-09 00:00:00" '$1FS$2> start  && $1FS$2 <end' inputfile
2017-09-08 20:00:01 a
2017-09-08 21:00:03 a

说明:

$1表示第一列 $2表示第二列 FS表示字段分隔符,默认情况下为空格。 $1FS$2表示前两列作为一个实体。这是必需的,因为您的日期和时间列之间有空格。