我想在我的日志文件中以1小时的间隔提取数据。这是我的变量:
date_file = date +"%Y-%m-%d %H"
date_minus_one = date -d "-1 hour" +"%Y-%m-%d %H"
date_minus_two = date -d "-2 hour" +"%Y-%m-%d %H"
这是我在awk中的语法,但它始终打印所有数据。
awk '$date_file >= $date_minus_one && $date_file <= $date_minus_two' <filename>
我也使用grep来获得1小时的间隔,但它没有用。
这是我想要每小时数据提取的示例数据:
2016-03-30|00:54:46,060|[WARNING]
2016-03-30|00:55:46,318|[OK]
2016-03-30|00:55:46,318|[OK]
2016-03-30|02:42:13,691|[UNKNOWN]
2016-03-30|07:53:16,356|[CRITICAL]
2016-03-30|08:56:41,410|[WARNING]
答案 0 :(得分:0)
日期的输出是一个字符串,其中有一个空格 - 即
$ date -d "-2 hour" +"%Y-%m-%d %H"
2016-03-20 18
因此需要引用它才能将其与文件中的某些内容进行比较。
awk '"$date_file" >= "$date_minus_one" && "$date_file" <= "$date_minus_two"'
这可以解决一些问题,但根据您的描述$ date_file,$ date_minus_one等是常量,所以没有会在执行期间发生变化,表达式将会要么永远是真的要么总是假的。