我必須通過讀取一個巨大的日志檔案來創建一個報告。
日志檔案包含類似這樣的資料。
請求呼叫設立X5356E08XWZV0ZVAE1 1645167707895 1645167709644 OK
請求呼叫資料庫:X5356E08XWZV0ZVAE2 1645167709651 1645167709748 OK
請求呼叫設立X5356E08XWZV0ZVAE3 1645167709750 1645167709874 OK
請求集貿準備X5356E08XWZV0ZVAE4 1645167709875 1645167709991 OK
請求呼叫跟蹤關鍵終點X5356E08XWZV0ZVAE5 1645167709992 1645167710379 KO
現在,我需要撰寫一個 shell 腳本。如果第一列是請求,則從 NF-1 中減去 NF-2 并列印前 3 個用戶。如果該行包含 KO,則忽略該行。
我正在嘗試構建一個簡單的邏輯 awk 但沒有多大成功。非常感謝任何幫助。我嘗試了下面的代碼,但它只是對時間進行排序,但如果第一列是 REQUEST,我也需要列印用戶名。
awk '$1 == "REQUEST" {print $(NF-3)" " $(NF-1) - $(NF-2)}' "path/simulation_1.log"
我得到了回應 USER1 1000 USER2 2000 。. 我希望回應按降序排序,并且只有 10 個條目。
uj5u.com熱心網友回復:
awk 'BEGIN {printf "Top ten User are\n"} {if ($0 !~ "KO" && $1 == "REQUEST") {print $2" time taken "$3-$4" seconds" | "sort -nrk4 | head -n10 "}}'
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/428511.html
