linux命令sed, awk日誌統計

2021-08-20 11:10:41 字數 1539 閱讀 7806

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 注 模糊查詢,避免日誌中沒...