6

我需要从包含某些字符的 S3 存储桶中计算压缩 (.gz) 文件中的条目数。我怎么能做到?

具体来说,我的 S3 存储桶是s3://mys3.com/. 在此之下,有数千个桶,如下所示:

s3://mys3.com/bucket1/
s3://mys3.com/bucket2/
s3://mys3.com/bucket3/
           ...
s3://mys3.com/bucket2000/

在每个存储桶中,大约有数百个压缩 (.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

每个压缩文件包含大约 20,000 个 JSON 对象(每个 JSON 对象是一行)。在每个 JSON 对象中,都有某些字段包含“请求”一词。我想计算 bucket1 中包含“请求”一词的 JSON 对象的数量。我试过了,但没有奏效:

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

我没有很多shell经验,所以有人可以帮助我吗?谢谢!

4

1 回答 1

10

如果有人感兴趣:

s3cmd ls --recursive s3://mys3.com/bucket1/ | awk '{print $4}' | grep '.gz' | xargs -I@ s3cmd get @ - | zgrep 'request' | wc -l
于 2013-07-08T21:25:16.617 回答