zcat / gzcat লিনাক্সে কাজ করে, অসক্সে নয়। সাধারণ লিনাক্স / অসক্স সামঞ্জস্য


50

প্রথমে নির্দিষ্ট সমস্যা: লিনাক্সে, আমি .zip ফাইলের তালিকাতে zcat ব্যবহার করি। ওএসএক্সে, zcat ফাইলের নামে স্বয়ংক্রিয়ভাবে .Z যুক্ত করে দেবে বলে মনে হচ্ছে। বিভিন্ন ব্যক্তি জেকেটকে জিজকাট প্রতিস্থাপনের পরামর্শ দেয়; তবে gzcat অভিযোগ করে যে ফাইলটি জিপিপ ফর্ম্যাটে নেই!

'ফাইল' এটি দেখায়: ... সংরক্ষণাগার ডেটা জিপ করুন, কমপক্ষে কমপক্ষে v2.0 নিষ্কাশন করতে

সুতরাং zcat বা gzcat উভয় osx এ কাজ করবে না, আমি কী করব?

আমার কাছে ব্যাশে একটি মাঝারি আকারের স্ক্রিপ্ট রয়েছে যা বিভিন্ন ফাইল প্রক্রিয়া করার জন্য zcat / gzcat, sed awk এবং অন্যান্য বেসিক ইউটিলিটিগুলি ব্যবহার করে। আমি আমার ওএসএক্স ল্যাপটপে সেই পরিবেশটিকে নকল করতে চাই যাতে আমি অফলাইনে কাজ করতে পারি। কোনও সাধারণ পরামর্শ আমি কীভাবে এ জাতীয় ব্যথা এড়াতে পারি? আমি আশা করি এটি একটি মোটামুটি রুটিন ওয়ার্কফ্লো তাই অন্যদের দ্বারা অবশ্যই তা বাছাই করা উচিত।


2
এটা জিপ সংগ্রহ তথ্য থাকলে, এটা না gzip, বিন্যাসে!
মাইকেল হ্যাম্পটন

@ মিশেলহ্যাম্পটন আমি লিনাক্স জরিমানা করে জ্যাক্যাট করতে পারি। Zcat বা gzcat উভয়ই osx এ কাজ করে না। তাহলে আমি কীভাবে এটি সমাধান করতে পারি? আমি ইনস্টল করতে পারি এমন আরও কি ইউটিলিটিগুলি রয়েছে যা লিনাক্স এবং ওএসএক্স উভয়ই কাজ করবে? এই স্ক্রিপ্টগুলি আমার নিজস্ব তাই আমি এগুলি পরিবর্তন করতে পারি (যদিও আমি সেগুলি সহজ রাখতে চাই)। আমি উভয় লিনাক্স / ওএসএক্স পরিবেশকেও নিয়ন্ত্রণ করি তাই আমি উভয়টিতেই সহজ ইনস্টলগুলি করতে পারি।
ব্যবহারকারী 23398

আমি এটা রুটিন বলতে চাই না। আমি সাধারণত zipজিপ ফাইলগুলি ব্যবহার করি না, করি না gzip
মাইকেল হ্যাম্পটন

উত্তর:


89

তুমি ঠিক. এটা বিরক্তিকর আচরণ।

$ zcat foo.txt.gz 
zcat: can't stat: foo.txt.gz (foo.txt.gz.Z): No such file or directory

এটা চেষ্টা কর:

$ zcat < foo.txt.gz 
asdfadsf

2
এটি ওএস এক্সে ঠিক আছে
ভ্যালারিও শিয়াভনি

1
স্পষ্টতই আমার উত্তরটি ভুল। লিনাক্স zcatপড়বে .zipএবং .Zফাইলগুলি। এখানে সমস্যাটি স্টিন বনাম নামকৃত ফাইলগুলির মধ্যে একটি নয়, এটি হ'ল প্রোগ্রামগুলির লিনাক্স রক্ষণাবেক্ষণকারীরা gzcatপ্রচুর পরিমাণে সম্পর্কিত নয় এমন ফাইল প্রকারগুলি পড়তে পরিবর্তন করেছেন ified
vy32

আমরা কীভাবে এটি অন্য প্রক্রিয়াতে পাইপ করব?
মধ্যে Petah

|অন্য কোনও প্রক্রিয়াতে পাইপের জন্য ব্যবহার করুন :cat < foo.txt.gz | wc
vy32

এটি আপনার সমস্যার সমাধান করবে, কমপক্ষে ওএসএক্স
jimh

18

আমি জানি এটি একটি পুরানো প্রশ্ন। যাইহোক, আমি আরও পুরানো গিথুব থ্রেড থেকে একটি সমাধান পেয়েছি ।

আপনি কেবল ম্যাক ওএস এক্সে ত্রুটি ছাড়াই gunzip -cএটির মতো কাজ করতে পারেন zcat

$ gunzip -c 20150707_backup.sql.gz | mysql -u mysql_user -p

13

আপনি ম্যাক ওএস এক্স এর জন্য জিএনইউ ব্যবহারগুলি ইনস্টল করতে পারেন, যেমন, হোমব্রিউ ব্যবহার করে (রান করুন brew install coreutils gnu-sed, যা gzcatএট এল ইনস্টল করে এবং gsed)। এটি আপনাকে প্রতিটি কমান্ডের GNU বাস্তবায়ন সরবরাহ করবে।

তারপরে, আপনার জীবনকে আরও সহজ করার জন্য, প্রতিটি কমান্ডের জন্য একটি পরিবর্তনশীল করুন (উদাহরণস্বরূপ sed=gsed, এবং $sedপরবর্তীকালে ব্যবহার করুন ), অথবা alias sed=gsedআপনি যে কোনও স্ক্রিপ্টে লিখে রাখুন (যেমন ) alias আপনার সুবিধার জন্য আমি এটিতে একটি সংক্ষেপ লিখেছি : gnu-tools-for-mac.sh । আপনার স্ক্রিপ্টগুলির উপরে এই কোডটি রাখুন (বা অন্তর্ভুক্ত করুন)।

আর্কাইভগুলি সংকুচিত এবং নিষ্কাশন উভয়ের জন্য জিএনইউ বাস্তবায়ন ব্যবহার করুন। আমি বলব আপনি ওএস এক্স এবং জিএনইউ প্রয়োগের ব্যবহারগুলিকে মিশ্রিত করতে পারবেন না।


3
আপনি বিকল্পটিতে /usr/local/opt/coreutils/libexec/gnubinআপনার যুক্ত করতে পারেন PATHযা gউপসর্গ ছাড়াই এগুলিকে উপলব্ধ করবে ।
bfontaine

3

আমি কেবল এটি দিয়েছি এবং খুব আকর্ষণীয় কিছু পেয়েছি! জন্য gzফাইল, আমরা চালানোর জন্য আশা করা যায় gzcatম্যাক OS এ।

সমাধান 1

  • ব্যবহার করুন gzcat /path/to/file.gzএবং এটি কাজ করা উচিত।
  • ব্যবহার zcat /path/to/file.gzআপনাকে ত্রুটি দেবে।

সমাধান 2

  • ফাইলটিতে পাইপ zcatএবং এটি কাজ করবে।
  • উদাহরণস্বরূপ, cat /path/to/file.gz | zcatকাজ করবে।

আশা করি এটা কাজে লাগবে!


0

ম্যাক ওএস এক্স সংস্করণ gzip(1) জিপ ফাইলগুলি পড়া সমর্থন করে না । ম্যান পৃষ্ঠা থেকে:

জিজিপ-এর এই সংস্করণটি ফাইলগুলি সংক্ষেপিত compress(1)বা সংযুক্ত করে সংক্ষেপিত করতে সক্ষম bzip2(1)

তবে লিনাক্স (জিএনইউ) সংস্করণটি করে

gunzipবর্তমানে দ্বারা নির্মিত ফাইল ডিকম্প্রেস করতে gzip, zip, compress, compress -Hবা pack

তৃতীয় পক্ষগুলি ম্যাক ওএস এক্সের জন্য জিএনইউ জিজিপ প্যাকেজ করেছে; আপনি ওয়েব অনুসন্ধান থেকে এগুলি পেতে পারেন। এটি সম্ভবত ন্যূনতম প্রতিরোধের পথ।


ওয়েবে অনুসন্ধান করা এবং নতুন সফ্টওয়্যার ইনস্টল করা কখনই সর্বনিম্ন প্রতিরোধের পথ নয়।
vy32

0

মজার বিষয় bash, একটি স্ক্রিপ্ট কার্যকর করার সময় আমার একই সমস্যা ছিল bash somescript.sh, যা এর gzcatভিতরে দিয়ে একটি লুপ চালিত করে। কিন্তু এই কিছু চেষ্টা ভিতরেsomescript.sh -script ...:

  1. zcat < file.txt.gz
  2. আমি brew install coreutilsইতিমধ্যে ইনস্টল করেছি , তবে তবুও, পুনরায় ইনস্টল করা হয়েছে:brew reinstall coreutils
  3. gunzip -c file.txt.gz

... কিছুই না ...

তবে আমি একটি ডিরেক্টরিতে একটি রেফারেন্সও ব্যবহার করেছি:

SOMEDIR="~/DIR1/DIR2/DATA"

যার ব্যাখ্যা দেওয়া হয় ~/DIR1/DIR2/DATAএবং স্পষ্টতই এর ভিতরে- bashস্ক্রিপ্টের মধ্যে কাজ করে না macOS। এটি কাজ করেছে:

SOMEDIR="${HOME}/DIR1/DIR2/DATA"

যা হিসাবে ব্যাখ্যা করা হয় /Users/someuser/DIR1/DIR2/DATA। আমি জানি না কেন - আমি কোনও বিশেষজ্ঞ ম্যাকোস-বেস-টেকি না - তবে এটি আমার মূল কোডের সাথে মিলে কাজ করেছে ...

gzcat file.txt.gz | awk '{ print $1, $2, $3, $4, $5, $6 }' > ${SOMEDIR}/new.file.txt

... মধ্যে আমার somescript.sh-script।

এটি কারও কাজে লাগে useful

সেরা

স্যান্ডার

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