我尝试使用以下命令提取当前日期的时间段并 grep 查找特定消息,如下所示:
awk -v date="$(date +%Y%m%d')" '$1="date" && $3>"180000" && $3<"192000"' /app/exploit/log/FILE_send.log | grep "End success file transfer /app/reception/FILENAME.dat to HOSTX"
但我无法按第一个日期列进行过滤。以下是当我从 awk 命令中删除变量并在 $1=20190405 上指定日期时 awk 命令的输出:
1 - 180050 | INFO | FILE_SEND.sh | | FILENAME.dat | 1800498307000 | End success file transfer /app/reception/FILENAME.dat to HOSTX
这是日志中的行:
20190405 - 180050 | INFO | FILE_SEND.sh | | FILENAME.dat | 1800498307000 | End success file transfer /app/reception/FILENAME.dat to HOSTX
我看不到该列被 1 替换的原因。如何过滤当天的第一列。
答案1
您可以使用命令:
awk -F'[-|]' -v date="20190405" '$1 == date && $2>180000 && $2<192000' file_name | grep "End success file transfer /app/reception/FILENAME.dat to HOSTX"
命令的输出awk
将是:
20190405 - 180050 | INFO | FILE_SEND.sh | | FILENAME.dat | 1800498307000 | End success file transfer /app/reception/FILENAME.dat to HOSTX
使用可变日期:
awk -F'[-|]' -v date="$(date +%Y%m%d)" '$1 == date && $2>180000 && $2<192000' filename