2013-07-02 8 views
5

特定の文字を含むS3バケットから、圧縮された(.gz)ファイルのエントリ数を数える必要があります。どうすればいい?s3cmd、zcatとgrepを使った行数

特に、S3バケットはs3://mys3.com/です。その下に、以下のようなバケットの何千もあります

バケットのそれぞれにおいて
s3://mys3.com/bucket1/ 
s3://mys3.com/bucket2/ 
s3://mys3.com/bucket3/ 
      ... 
s3://mys3.com/bucket2000/ 

は、次のようにzip圧縮(.gzが)JSONオブジェクトの数百程度あります

s3://mys3.com/bucket1/file1.gz 
s3://mys3.com/bucket1/file2.gz 
s3://mys3.com/bucket1/file3.gz 
      ... 
s3://mys3.com/bucket1/file100.gz 

の各zipファイルには約20,000個のJSONオブジェクトが含まれています(各JSONオブジェクトは1行です)。それぞれのJSONオブジェクトには、 "request"という単語を含む特定のフィールドがあります。 bucket1に "request"という単語が含まれているJSONオブジェクトがいくつあるかを調べたいと思います。私はこれを試みたが、うまくいかなかった:

zcat s3cmd --recursive ls s3://mys3.com/bucket1/ | grep "request" | wc -l 

私はシェルの経験がたくさんあるので、誰もそれを手伝ってもらえますか?ありがとう!ケースの誰に

答えて

8

は興味を持っている:

s3cmd ls --recursive s3://mys3.com/bucket1/ | awk '{print $4}' | grep '.gz' | xargs [email protected] s3cmd get @ - | zgrep 'request' | wc -l 
+0

私は感謝、探していたものだけ! –

関連する問題