一千萬個為什麽

搜索

從日誌文件中提取不包含禁止行的查詢

我有一個類似於以下內容的日誌文件: query1 startQuery query1 do something query1 do something else query2 startQuery query1 do something banned query2 do something query3 startQuery query2 endQuery 1000 query3 something else to do query1 endQuery 2003 query3 do something query4 startQuery query4 endQuery 100 query3 endQuery 1434

我發現運行時間最長的查詢:

grep "endQuery" logfile | awk '{print $3 " " $1}' | sort -nr | head -n 3 2003 query1 1434 query3 1000 query2

但是,已知某些操作很長,我想找到不包含這些操作的運行時間最長的查詢。例如,我想找到在其任何日誌行中都沒有包含單詞“banned”的運行時間最長的查詢。 在這個例子中,它將輸出: 1434 query3 1000 query2 100 query4

實際上,這些日誌文件很大並且包含大量查詢。

最佳答案

首先,請註意,您不需要調用 grep ,順便說一下:它可以無縫集成到 awk 調用中。

轉載註明原文: 從日誌文件中提取不包含禁止行的查詢