如何查看日期列距今天小于 x 天的行

如何查看日期列距今天小于 x 天的行

我的档案

ID=29524 02/12/2015,23:59:34,'PAt, 0,
ID=29628 02/12/2015,23:59:37,'PAb, 1.9,
ID=30816 03/12/2015,00:00:20,'PAc, 4.15,

我想打印比今天少 X 天的文件。

我的尝试如下:

cat response.txt | awk -v start=$(date -d "-5 days" +%d/%m/%Y) -F" " '{split($2, a, /\//)} (a[3] a[1] a[2] <start)'| cut -d, -f1

答案1

我假设当您说比今天少 X 天时,您的意思是“超过 5 天”的文件。如果您的意思是正好 5 天的文件,则需要修改下面的脚本以删除最有可能的时间戳,并且 -lt 可以替换为 -eq

#!/bin/bash

CUTOFF=$(date +%s -d "5 days ago")

while read p; do
   time=$(echo $p | awk -F'[ ,]' '{print $2" "$3}')
   epoch_time=$(date --date="$time" +%s) 

   if [ $epoch_time -lt $CUTOFF ]; then
   echo $p
   fi;
done <response.txt

上面的代码将加载response.txt并循环遍历文件中的每一行。 awk 按空格和逗号解析为单独的列,然后打印日期和时间。之后(可能可以在同一行中完成),它将日期/时间转换为以秒为单位的纪元时间。之后,通过 if 语句将截止时间(以秒为单位)与文件时间进行比较就很简单了。

以上只会打印文件超过 5 天

相关内容