awk 使用内置变量和自定义变量
内置变量
如日志文件长下面这样,我们想找出调用某个接口最后的时间
[application-xxx-core-dispatcher-18] 2022-07-11 21:05:34,027 [INFO] from callback.CallbackActor-line:126 - send http://172.18.34.130:9046/exception/location/abnormal
可以这样:
grep $1 play.log|tail -1|awk '{begin_time=$2" "$3;print begin_time}'
说明:
grep $1 play.log|tail -1
: 查找$1变量最后出现的一行awk '{begin_time=$2" "$3;print begin_time}'
: 打印最后一行的年月日和时间
自定义变量
还是上面的日志,想要过滤出某个时间段的日志,可以把开始和截止时间当成参数传进去
begin_time=`grep $1 play.log|tail -1|awk '{begin_time=$2" "$3;print begin_time}'`
end_time=$(date "+%Y-%m-%d %H:%M:%S")
cat play.log|awk -v begin="${begin_time}" -v end="${end_time}" '{cur=$2" "$3;if(cur ~ /^2022/ && cur > begin && cur < end){print $0}}'