我的 NAS 會建立以下格式的日誌檔案:
<30>1 2014-07-21T05:02:10+02:00 ABC-NAS qlogd 6432 - - qlogd[6432]: event log: Users: Glacier, Source IP: 127.0.0.1, Computer name: localhost, Content: [Glacier] Backup job [Backup ABC-PC] finished successfully
<30>1 2014-07-21T05:02:27+02:00 ABC-NAS qlogd 6432 - - qlogd[6432]: event log: Users: Glacier, Source IP: 127.0.0.1, Computer name: localhost, Content: [Glacier] Backup job [Backup ABC-HTPC] finished successfully
<28>1 2014-07-21T05:10:59+02:00 ABC-NAS qlogd 6920 - - qlogd[6920]: event log: Users: Glacier, Source IP: 127.0.0.1, Computer name: localhost, Content: [Glacier] Backup job [Backup ABC-NAS] is abnormal shutdown
<30>1 2014-07-21T06:00:15+02:00 ABC-NAS qlogd 6920 - - qlogd[6920]: event log: Users: Glacier, Source IP: 127.0.0.1, Computer name: localhost, Content: [Glacier] Backup job [Backup ABC Metadata] started
<30>1 2014-07-21T06:00:27+02:00 ABC-NAS qlogd 6920 - - qlogd[6920]: event log: Users: Glacier, Source IP: 127.0.0.1, Computer name: localhost, Content: [Glacier] Backup job [Backup ABC Metadata] finished successfully
使用 BASH 腳本我想建立一個僅包含以下內容的文字檔案:
Monday 21 July 2014 - 04:10 AM
Glacier Backup job [Backup ABC-PC] finished successfully
Monday 21 July 2014 - 07:02 AM
Glacier Backup job [Backup ABC-HTPC] finished successfully
等等。
我一直在嘗試使用 cat 和 grep,但它很快對我來說就變得太複雜了。誰能幫助我朝著正確的方向前進?
答案1
這是一個超級簡單的暴力破解 bash 腳本
cat log | cut -d " " -f 2,20- | while read -r date message; do
echo $date
echo $message
done
樣本輸出
2014-07-21T05:02:10+02:00
[Glacier] Backup job [Backup ABC-PC] finished successfully
2014-07-21T05:02:27+02:00
[Glacier] Backup job [Backup ABC-HTPC] finished successfully
如果你想要更多的功能,那我強烈建議你學習Python。