実行時間がXより長い行を見つける方法

実行時間がXより長い行を見つける方法

私のログにこの行があります。

InvokeSuperLambda 実行時間: xxs

ここで、xxは実行時間、sは静的文字です。

ログファイルでこのコマンドを実行すると

grep -a "invokeSuperLambda execution time" /root/.pm2/logs/proxy-out-1.log

わかりました。

2019-01-13 07:36:44.783,[email protected]:57888: << @@@@ Lambda     
:invokeSuperLambda execution time:0s
2019-01-13 07:37:02.909,[email protected]:58952: << @@@@ Lambda 
:invokeSuperLambda execution time:14s
2019-01-13 07:38:09.820,[email protected]:54992: << @@@@ Lambda 
:invokeSuperLambda execution time:1s
2019-01-13 07:38:11.866,[email protected]:59132: << @@@@ Lambda 
:invokeSuperLambda execution time:357s

実行時間が10秒を超える行のみをフィルタリングする方法が必要なため、上記の例では次の2行を取得する必要があります。

2019-01-13 07:37:02.909,[email protected]:58952: << @@@@ Lambda 
:invokeSuperLambda execution time:14s
2019-01-13 07:38:11.866,[email protected]:59132: << @@@@ Lambda 
:invokeSuperLambda execution time:357s

ベストアンサー1

次のスクリプトを使用してこれを実行できます。

TIMEX=10
awk -F\: -v timex=$TIMEX '{if (int($NF) > timex) print}' /root/.pm2/logs/proxy-out-1.log

次のようにgrepスクリプトを追加します。

TIMEX=10
grep -a "invokeSuperLambda execution time" /root/.pm2/logs/proxy-out-1.log|awk -F\: -v timex=$TIMEX '{if (int($NF) > timex) print}'

おすすめ記事