awk一行資料的部分屬性去重統計
awk '' base.20180514.log | grep 'keyword' | awk -f '?' '' | awk -f '&' '' | uniq
sed統計乙個時間段的日誌數量
sed -n '/2018-05-16 21:00:00/, /2018-05-16 22:30:00/p' base.20180516.log | grep 'keyword' | wc -l
sed統計乙個時間段的請求日誌,請求次數第二的url及次數
sed -n '/2018-06-02 17:05:19/, /2018-06-02 17:09:19/p' request.20180602.log | awk -f ':' '' | awk -f '?' '' | awk -f ' ' '' | sort | uniq -c | sort -nrk 1 | head -n 2 | tail -n 1
sort 引數列表
-b:忽略每行前面開始出的空格字元;
-c:檢查檔案是否已經按照順序排序;
-d:排序時,處理英文本母、數字及空格字元外,忽略其他的字元;
-f:排序時,將小寫字母視為大寫字母;
-i:排序時,除了040至176之間的ascii字元外,忽略其他的字元;
-m:將幾個排序號的檔案進行合併;
-m:將前面3個字母依照月份的縮寫進行排序;
-n:依照數值的大小排序;
-o《輸出檔案》:將排序後的結果存入制定的檔案;
-r:以相反的順序來排序;
-t《分隔字元》:指定排序時所用的字段分隔字元;
+《起始字段》-《結束字段》:以指定的字段來排序,範圍由起始欄位到結束欄位的前一欄位
uniq 引數列表
-d, --repeated //只輸出重複的行
-d, --all-repeated //只輸出重複的行,不過有幾行輸出幾行
-f, --skip-fields=n //-f 忽略的段數,-f 1 忽略第一段
-i, --ignore-case //不區分大小寫
-s, --skip-chars=n //根-f有點像,不過-s是忽略,後面多少個字元 -s 5就忽略後面5個字元
-u, --unique //去除重複的後,全部顯示出來,根mysql的distinct功能上有點像
-z, --zero-terminated end lines with 0 byte, not newline
-w, --check-chars=n //對每行第n 個字元以後的內容不作對照
--help //顯示此幫助資訊並退出
--version //顯示版本資訊並退出
參考文件1
sed awk擷取日誌
awk 字串1 a file sed n 字串1 n b2 file awk 字串1 a file sed n 字串1 m x lzj p b x file 擷取兩個字串之間日誌 n 匹配行的下一行 n 追加到下一行 p 列印 p 列印到 n b 無條件跳轉 未匹配後面不執行 t 有條件跳轉 未匹配...
用SED AWK來分析NGINX日誌!
2010 01 28 16 40 30 標籤 sed nginx awk 原始出處 作者資訊和本宣告。否則將追究法律責任。前幾天寫了篇文章是用awk 來過濾nginx 日誌裡面的特定值,但是光過濾出來了不行,還得要用啊,開發同事給我提出了新要求。讓我統計 9 30 13 30 和13 30 17 3...
linux命令 日誌
1 時段日誌 命令 sed n 2021 12 08 16 00 00 2021 12 08 17 00 00 p nohup.out 注 需要日誌中有對應的時間,否則查不到 命令 sed n 2021 12 08 16 2021 12 08 17 p nohup.out 注 模糊查詢,避免日誌中沒...