我有一个日志文件,日志文件中的每一行都包含2021-09-04T20:02:33,315Z格式的时间戳数据,我想从日志文件中只过滤最后30秒的日志。我发现awk可以用来提取范围内的日期
2021-09-04T20:02:33,315Z
sudo awk -vDate=$(date -d '30 seconds ago' +%Y-%m-%dT%H:%M:%S,000Z) '{ if ($4 > Date) print Date FS $4}'
但我在命令中使用if条件来提取日期、小时、分钟和秒来检查条件。
juzqafwq1#
您可以在两次测试之间使用具有Coma(,)的awk中的范围。就像这样:
,
awk '$1$2$3 > "Sep3008:47:46", $1$2$3 < "Sep3008:54:04" {print $0}' /var/log/messages
您可以使用您的格式计算之前的时间戳,如您的示例所示:
awk -v TS1=$(date ...) -v TS2=$(date ...) '$4 > TS1, $4 < TS2 { print ...}'
1条答案
按热度按时间juzqafwq1#
您可以在两次测试之间使用具有Coma(
,
)的awk中的范围。就像这样:
您可以使用您的格式计算之前的时间戳,如您的示例所示: