我有一個日志檔案,其中包含如下格式的行。我正在嘗試在 linux 中創建一個腳本,該腳本將洗掉從當前日期起 x 天之前的行。感謝您的幫助。
Wed Jan 26 10:44:35 2022 : Auth: (72448) Login incorrect (mschap: MS-CHAP2-Response is incorrect): [martin.zeus] (from client CoreNetwork port 0 via TLS tunnel)
Wed Jan 16 10:45:32 2022 : Auth: (72482) Login OK: [george.kye] (from client CoreNetwork port 5 cli CA-93-F0-6C-7E-77)
uj5u.com熱心網友回復:
我認為你應該看看logrotate和Kibana & Elastic search來決議和過濾日志。
盡管如此,我制作了一個簡單的腳本,它只列印從作為引數傳遞的那一天到當前日期的條目,
例如,這將只列印最近 5 天以來的日志。 bash filter.sh log.txt 5
#!/usr/bin/env bash
file="${1}"
days="${2:-1}"
epoch_days=$(date -d "now -${days} days" %s)
OFS=$IFS
IFS=$'\n'
while read line; do
epoch_log=$(date --date="$(echo $line | cut -d':' -f1,2,3)" %s)
if [ ${epoch_log} -ge ${epoch_days} ]; then
echo ${line}
fi
done < ${file}
IFS=$OFS
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/422267.html
標籤:
