যুক্তি হিসাবে প্রদত্ত কোনও ফাইল থেকে ডেটা পড়ার প্রত্যাশা করে এমন কোনও প্রোগ্রামে আমি কীভাবে ডেটা স্ট্রিম করতে পারি?


17

আমার কাছে একটি বিশাল গিজিপযুক্ত ফাইল রয়েছে এবং আমি এটি পড়তে একটি প্রোগ্রাম চাই (এই ক্ষেত্রে 4 এস-আমদানি)। প্রথমে ফাইলটি আনজিপ করতে এবং তারপরে একটি আর্গুমেন্ট হিসাবে ফাইলটির পথ দিয়ে প্রোগ্রামটি কল করতে অনেক সময় লাগে। এর মতো কিছু করা কি সম্ভব হবে:

zcat huge.gz | 4s-import <SOME MAGIC>

যেখানে কিছু-ম্যাজিক একটি বিমূর্ত ফাইলের স্ট্যান্ডের মতো স্ট্রিনের মতো?

অন্যথায় আমাকে আরও বেশি ধীর এবং বেশি ডিস্ক স্পেস গ্রহণের বিকল্প হ'ল:

zcat huge.gz > huger
4s-import huger

উত্তর:


32

আপনি (বা ) <()এর প্রক্রিয়া বিকল্প বিকল্প ব্যবহার করতে পারেন :bashzsh

4s-import <(zcat huge.gz)

এই অপারেটর একটি অস্থায়ী ফিফো তৈরি করবে /dev/fd/NNএবং <(.)স্ট্রিংয়ের সাথে প্রতিস্থাপন করবে /dev/fd/NN4s-importএখন /dev/fd/NNসেই ফিফো থেকে খুলতে এবং পড়তে পারে, যখন bashচলবে zcat huge.gz, যা এর আউটপুট প্রেরণ করে /dev/fd/NN


17
  1. অনেক প্রোগ্রামের একটি -স্ট্যান্ডার্ড ইনপুট থাকে। যদি আপনার হয়, এটি "বিল্টিন" হিসাবে ব্যবহার করুন।

  2. আপনি ফাইল হিসাবে /dev/stdinবা ব্যবহার হিসাবেও চেষ্টা করতে পারেন /dev/fd/0

  3. একটি তৃতীয় বিকল্পটি mkfifoএকটি ফিফো বিশেষ ফাইল তৈরি করতে ব্যবহার করা হয়। একটি শেলের মধ্যে আপনি আপনার ডেটাতে পাইপ করেন (উদা। gunzip > your_fifo_file), অন্যটিতে আপনি আপনার প্রোগ্রামটিকে ফাইল হিসাবে ফিফো দিয়ে কল করেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.