私はアプリケーションログを持っており、すべての行を10000 msを超える実行時間で印刷する必要があります。以下のサンプルでは、2行目が10kmsを超えず、3行目に実行時間が表示されないため、最初の行のみが出力されます。awk行の条件に基づいた印刷行
SERVICE_NAME: | API: GetContents | 20160927000511741 | EXECUTION TIME: 10130(ms)
SERVICE_NAME: | API: GetContentsExtend | 20160927000511741 | EXECUTION TIME: 22(ms)
SERVICE_NAME: | API: GetContentsExtended | 20160927000511741 | Current TN: -15698724705531331
私は、ファイルに複数のステップに
ストア実行値をすることによってこれを行うことができます:
cat input.txt | while read line
do
cat logfile.log | grep $line"(ms)" >> output.txt
done
ができるのと同じログを横断この入力ファイルを使用して
cat logfile.log | grep "EXECUTION TIME:" | awk '{print $NF}' | cut -d "(" -f1 | awk '{if ($1>9999) print $1}' >> input.txt
ループこれはたぶん1ライナーコマンドで行うことができますか?私に苦労しているのは、実行時間値の後に(ms)あることです。
スレッシュホールドが1,000の代わりに1,234に変更された場合、正規表現とのマッチングは大きなアプローチではなく、数値比較になります。 –