2013-07-02 5 views
5

के साथ s3cmd गिनती लाइनें मुझे कुछ वर्ण वाले एस 3 बाल्टी से ज़िपित (.gz) फ़ाइल में प्रविष्टियों की संख्या गिनने की आवश्यकता है। मैं यह कैसे कर सकता हूं?z3 और grep

विशेष रूप से, मेरी एस 3 बाल्टी s3://mys3.com/ है। कि के तहत, बाल्टी के हजारों निम्नलिखित की तरह कर रहे हैं:

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

से प्रत्येक:

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

बाल्टी में से प्रत्येक में, वहाँ ज़िपित (.gz) के सैकड़ों निम्नलिखित की तरह JSON ऑब्जेक्ट के बारे में हैं ज़िप फ़ाइल में लगभग 20,000 JSON ऑब्जेक्ट्स हैं (प्रत्येक JSON ऑब्जेक्ट एक पंक्ति है)। प्रत्येक JSON ऑब्जेक्ट में, "अनुरोध" शब्द वाले कुछ फ़ील्ड हैं। मैं गिनना चाहता हूं कि बाल्टी 1 में "JS" शब्द कितने 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

मैं के लिए, धन्यवाद बस क्या देख रहा था! –