一千萬個為什麽

搜索

禁止された行を含まないログファイルからのクエリの抽出

私は次のようなログファイルを持っています:

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

しかし、特定の操作が長いことが知られており、これらの操作を含まないという最も長い実行クエリを探したいと思います。たとえば、ログラインのいずれにも "禁止された"という単語を含まない最長の実行中のクエリを探したいとします。

この例では、次のように出力されます。

1434 query3
1000 query2
100 query4

実際には、これらのログファイルは大きく、多くのクエリを含んでいます。

最佳答案

まず、 grep を呼び出す必要はありません。これは awk 呼び出しにシームレスに統合することができます。

轉載註明原文: 禁止された行を含まないログファイルからのクエリの抽出