使用sed或awk从两个日期时间戳之间的日志中删除行?

时间:2015-07-29 12:16:11

标签: awk sed

我的日志文件中的$ 3和$ 4列都有一个日期时间戳,我想使用sed或类似的命令来编辑文件,以删除超过24小时的记录。

2015-07-29 04:30:12
2015-07-29 04:30:21
2015-07-29 04:30:21
2015-07-29 04:30:21
2015-07-29 04:31:42

我成功地使用这样的东西来搜索日期之间的记录。

LAST24HR=$(date "+%Y-%m-%d %H:%M:%S" -d "-24 hour")
NOW=$(date "+%Y-%m-%d %H:%M:%S")

awk '$3" "$4>=from&&$3" "$4<=to' from="$LAST24HR" to="$NOW"

我是否有办法以类似的方式从文件中删除行?

1 个答案:

答案 0 :(得分:2)

awk -v "DateRef=$( date "+%Y-%m-%d %H:%M:%S" -d "-24 hour" )" '( $3 " " $4 ) >= DateRef { print }'
  • 仅打印范围内的记录
  • 如果使用awk enter link description here或使用重定向和临时文件,
  • 用于&#34;就位#34;

我认为您的记录超过24小时&#39;但并不完全是在约会之间的&#39;因为您将当前日期作为参考,我不会怀疑有更新的条目。