使用AWK按日期过滤寄存器

时间:2019-06-18 13:15:15

标签: bash awk

我有一个.csv文件,其中包含许多寄存器,需要按某些值进行过滤:

  • 字段10 =文本
  • 字段49 = texT
  • 字段51 =日期(昨天的日期,格式为dd / mm / yyyy 00:00:00)

我在过滤文本字段时没有任何问题,但在日期字段方面遇到了麻烦。

我使用变量过滤日期:

yesterday=$(date +%d"/"%m"/"%Y" 00:00:00" --date='-1 day')

当我尝试用awk行获取寄存器时,当文件中有300个以上的寄存器时,它不返回任何值。如果不使用字段51进行过滤,则会得到一个包含很多寄存器的文件。有想法吗?

这是AWK行:

awk -F "%" '{if($10=="INFO") if($49=="REVIEW") if($51==$yesterday) {print $5 ";" $6}}' file.csv > procesedFile.csv

我也尝试过此方法,但没有成功:

if($51=="$yesterday")

如果我直接过滤写日期,它将正常工作:

awk -F "%" '{if($10=="INFO") if($49=="REVIEW") if($51=="17/06/2019 00:00:00") {print $5 ";" $6}}' file.csv > procesedFile.csv

打印$ yesterday变量将返回预期值“ 17/06/2019 00:00:00”

0 个答案:

没有答案