一度に複数のファイルを処理しています。それぞれに要約統計があります。プロセスの最後に、すべての統計を合計する要約ファイルを作成したいと考えています。ログファイルから統計情報を掘り出す方法はすでに知っています。しかし、数字を追加して別のファイルにエコーできるようにしたいので、時間を掘り出すために使用するものを次に示します。
find . -iname "$srch1*" -exec grep "It took" {} \; -print
出力は次のようになります
It took 0 hours, 11 minutes and 4 seconds to process that file.
./filepart000010-20140204-154923.dat.gz.log
It took 0 hours, 11 minutes and 56 seconds to process that file.
./filepart000007-20140204-154923.dat.gz.log
It took 0 hours, 29 minutes and 54 seconds to process that file.
./filepart000001-20140204-154923.dat.gz.log
It took 0 hours, 22 minutes and 33 seconds to process that file.
./filepart000004-20140204-154923.dat.gz.log
It took 0 hours, 59 minutes and 38 seconds to process that file.
./filepart000000-20140204-154923.dat.gz.log
It took 0 hours, 11 minutes and 50 seconds to process that file.
./filepart000005-20140204-154923.dat.gz.log
It took 0 hours, 22 minutes and 10 seconds to process that file.
./filepart000002-20140204-154923.dat.gz.log
It took 0 hours, 10 minutes and 39 seconds to process that file.
./filepart000008-20140204-154923.dat.gz.log
It took 0 hours, 12 minutes and 27 seconds to process that file.
./filepart000009-20140204-154923.dat.gz.log
It took 0 hours, 22 minutes and 36 seconds to process that file.
./filepart000003-20140204-154923.dat.gz.log
It took 0 hours, 11 minutes and 40 seconds to process that file.
./filepart000006-20140204-154923.dat.gz.log
私が欲しいのはこのようなものです
Summary
filepart000006-20140204-154923.dat.gz.log 0 hours, 11 minutes and 40 seconds
次に、それらの中で最も長い時間を見つけて、のようなメッセージを出力します。
Total time taken =____________
並行して実行しているため、所要時間は最長のものです。
次に、このような計算を行います。
find . -iname "$srch*" -exec grep "Processed Files" {} \; -print
Processed Files: 7936635
./filename-20131102-part000000-20140204-153310.dat.gz.log
Processed Files: 3264805
./filename-20131102-part000001-20140204-153310.dat.gz.log
Processed Files: 1607547
./filename-20131102-part000008-20140204-153310.dat.gz.log
Processed Files: 3180478
./filename-20131102-part000003-20140204-153310.dat.gz.log
Processed Files: 1595497
./filename-20131102-part000007-20140204-153310.dat.gz.log
Processed Files: 1568532
./filename-20131102-part000009-20140204-153310.dat.gz.log
Processed Files: 3259884
./filename-20131102-part000002-20140204-153310.dat.gz.log
Processed Files: 3141542
./filename-20131102-part000004-20140204-153310.dat.gz.log
Processed Files: 3124221
./filename-20131102-part000005-20140204-153310.dat.gz.log
Processed Files: 3136845
./filename-20131102-part000006-20140204-153310.dat.gz.log
メトリクスだけが必要な場合
( find . -iname "dl-aster-full-20131102*" -exec grep "Processed Files" {} \;) | cut -d":" -f2
7936635
3264805
1607547
3180478
1595497
1568532
3259884
3141542
3124221
3136845
上記の 2 に基づいて、概要ファイルを作成するだけです。
Filename Processed files
filename-20131102-part000000-20140204-153310.dat.gz.log 7936635
....次に、上記のすべてが追加された要約。
( 7936635 +
3264805 +
1607547 +
3180478.....etc
1595497
1568532
3259884
3141542
3124221
3136845 ) as
Total Files = ____________
全体的にこのようなものです。
Filename Processed files
filename-20131102-part000000-20140204-153310.dat.gz.log 7936635
Total Files = ____________ ( sum of all above )
実行する必要があるのは、出力を形式で取得することだけです
Filename Processed files
filename-20131102-part000000-20140204-153310.dat.gz.log 7936635
上記のコマンドでは、それらは別の行にあり、すでに出力されている数値の合計を実行します。
私の質問はです。-- 上記のような追加を実行するにはどうすればよいですか - 何かを使用します。よくわからないので、PERL は避けたいと思います。シェルが実行されるすべての場所にインストールされます。出力を上記のようにフォーマットするにはどうすればよいですか。私はすでに出力を抽出する方法を知っています