Gziped फ़ाइल से पहली कुछ पंक्तियाँ कैसे प्राप्त करें? मैंने zcat की कोशिश की, लेकिन इसकी एक त्रुटि है
zcat CONN.20111109.0057.gz|head
CONN.20111109.0057.gz.Z: A file or directory in the path name does not exist.
Gziped फ़ाइल से पहली कुछ पंक्तियाँ कैसे प्राप्त करें? मैंने zcat की कोशिश की, लेकिन इसकी एक त्रुटि है
zcat CONN.20111109.0057.gz|head
CONN.20111109.0057.gz.Z: A file or directory in the path name does not exist.
जवाबों:
zcat(1)
compress(1)
या तो द्वारा आपूर्ति की जा सकती है gzip(1)
। आपके सिस्टम पर, ऐसा प्रतीत होता है compress(1)
- यह .Z
एक्सटेंशन वाली फ़ाइल की तलाश में है ।
के gzip -cd
स्थान पर स्विच करें zcat
और आपकी कमांड ठीक काम करे:
gzip -cd CONN.20111109.0057.gz | head
व्याख्या
-c --stdout --to-stdout
Write output on standard output; keep original files unchanged. If there are several input files, the output consists of a sequence of independently compressed members. To obtain better compression, concatenate all input files before compressing
them.
-d --decompress --uncompress
Decompress.
zless file.gz | head
। zmore
अभी भी आपको टूटी पाइप के साथ छोड़ देता है। zless
जाने का रास्ता मालूम पड़ता है।
कुछ प्रणालियों (जैसे, मैक) पर, आपको उपयोग करने की आवश्यकता है gzcat
।
एक मैक पर आपको <
zcat का उपयोग करने की आवश्यकता है :
zcat < CONN.20111109.0057.gz|head
यदि लाइनों की एक सतत श्रेणी की आवश्यकता होती है, तो एक विकल्प हो सकता है:
gunzip -c file.gz | sed -n '5,10p;11q' > subFile
जहां 5 वीं और 10 वीं लाइनों (दोनों समावेशी) के बीच की लाइनों file.gz
को एक नए में निकाला जाता है subFile
। के लिए sed
विकल्प, का उल्लेख मैनुअल ।
यदि प्रत्येक, कहे, 5 वीं पंक्ति आवश्यक है:
gunzip -c file.gz | sed -n '1~5p;6q' > subFile
जो 1 लाइन निकालता है और 4 लाइनों पर कूदता है और 5 वीं लाइन और इसी तरह से चुनता है।
यह जाग स्निपेट आपको न केवल पहली कुछ पंक्तियाँ दिखाएगा - बल्कि एक सीमा जिसे आप निर्दिष्ट कर सकते हैं। इसमें लाइन नंबर भी जोड़ा जाएगा, जो मुझे एक त्रुटि संदेश को डीबग करने के लिए आवश्यक है जो एक gzipped फ़ाइल में नीचे एक निश्चित लाइन तरीके की ओर इशारा करता है।
gunzip -c file.gz | awk -v from=10 -v to=20 'NR>=from { print NR,$0; if (NR>=to) exit 1}'
यहाँ ऊपर दिए गए एक लाइनर में इस्तेमाल किया गया awk स्निपेट है। Awk में NR एक बिल्ट-इन वैरिएबल (अब तक पाए गए रिकॉर्ड की संख्या) है, जो आमतौर पर एक लाइन नंबर के बराबर होता है। से और चर को कमांड लाइन से -v विकल्पों के माध्यम से उठाया जाता है।
NR>=from {
print NR,$0;
if (NR>=to)
exit 1
}
tar -xzOf some_huge_file.tar.gz | head