সঙ্কুচিত না করে একটি .gz সংক্ষেপিত ফাইল থেকে কয়েকটি লাইন কীভাবে পাবেন


90

গিজিপযুক্ত ফাইল থেকে প্রথম কয়েকটি লাইন কীভাবে পাবেন? আমি zcat চেষ্টা করেছি, তবে এটি একটি ত্রুটি ছুঁড়েছে

zcat CONN.20111109.0057.gz|head
CONN.20111109.0057.gz.Z: A file or directory in the path name does not exist.

উত্তর:


151

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.

7
বিটিডাব্লু, আপনি যদি * .tar.gz নিয়ে বসে থাকেন তবে এটি আপনাকে সাহায্য করবে: tar -xzOf some_huge_file.tar.gz | head
ডেমানিয়াক

পুরানো থ্রেড তবে এটি বড় জিজেড ফাইল সহ প্রস্থান স্থিতি 1 সহ একটি ভাঙ্গা পাইপ উত্পাদন করে। কোন পরিষ্কার কাজ?
কালিগনে

4
আমি এ পর্যন্ত খুঁজে পেয়েছি সেরা এবং সবচেয়ে সহজ কাজ: ব্যবহার zless file.gz | headzmoreএখনও ভাঙা পাইপ দিয়ে তোমাকে ছেড়ে যায়। zlessযাবার উপায় বলে মনে হচ্ছে
kigigne

zless প্রস্থান করে না ... অন্তত আমার বড় ফাইলে নয়। আমি এখনও ভাঙা পাইপ ত্রুটি ছাড়াই এটি করার উপায় খুঁজছি ...
ফ্রিক



2

যদি অবিচ্ছিন্ন রেখাগুলির প্রয়োজন হয় তবে একটি বিকল্প হতে পারে:

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 তম লাইনটি তুলে ধরে।


0

এই awk স্নিপেট আপনাকে প্রথম কয়েকটি লাইনই প্রদর্শন করতে দেয় না - তবে আপনি নির্দিষ্ট করতে পারেন এমন একটি ব্যাপ্তি। এটি লাইন নম্বরগুলি যুক্ত করবে যা একটি গিজিপযুক্ত ফাইলের নিচে নির্দিষ্ট লাইন পথে নির্দেশ করে একটি ত্রুটি বার্তা ডিবাগ করার জন্য আমার প্রয়োজনীয় ছিল needed

gunzip -c file.gz | awk -v from=10 -v to=20 'NR>=from { print NR,$0; if (NR>=to) exit 1}'

উপরের এক লাইনারে ব্যবহৃত awk স্নিপেট এখানে। অ্যাডাব্লিক ইন এনআর হ'ল একটি বিল্ট-ইন ভেরিয়েবল (এখনও অবধি পাওয়া রেকর্ডের সংখ্যা) যা সাধারণত একটি লাইন সংখ্যার সমতুল্য। কমান্ড লাইন থেকে -v বিকল্পগুলির মাধ্যমে এবং পরিবর্তনশীল থেকে নেওয়া হয়।

NR>=from {
   print NR,$0; 
   if (NR>=to) 
     exit 1
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.