জিএনইউ সমান্তরালের সাথে আমি কীভাবে জিএনইউ স্প্লিটের "ফিল্টার" বিকল্পটি ব্যবহার করব?


3

আমি প্রচুর বিশাল জিজেড্র ফাইলটি এন-লাইন সংক্ষেপিত জিজেপড অংশগুলিতে বিভক্ত করার চেষ্টা করছি।

প্রদর্শন করতে, আসুন নিম্নলিখিতগুলি বিবেচনা করুন:

seq 100 | gzip > big_file0.gz

আমি নিম্নলিখিত হিসাবে এটি একাধিক 10-লাইন সংক্ষেপিত ফাইলগুলিতে বিভক্ত করতে পারি:

zcat big_file0.gz | split -l 10 --filter='gzip > $FILE.gz' - big_file0.

আসুন জেনে নিই আমরা বড় ফাইল নম্বর আছে যাক big_file0.gz, big_file1.gz...

আমি এখন GNU সমান্তরাল ব্যবহার করে এই ফাইলগুলির প্রতিটি বিভক্ত করতে চাই। আমি যে আদেশটি দিয়ে আসছি তা এখানে:

parallel "zcat {} | split -l 10 --filter='gzip > $FILE.gz' - {.}." ::: big_file0.gz big_file1.gz

তবে, শেলের বিকল্পটি $FILEপ্রত্যাশার মতো কাজ করে না। $FILEএকটি খালি স্ট্রিং দিয়ে প্রতিস্থাপন করা হয়, সুতরাং সমস্ত আউটপুট কল করা একটি ফাইল লিখিত হয় .gz

$FILEজিএনইউ সমান্তরালে প্রত্যাশার মতো কাজ করার বিকল্প আমি কীভাবে পেতে পারি ?

উত্তর:


3

ভেরিয়েবলের শেল সম্প্রসারণ $FILEখালি স্ট্রিংয়ে রূপান্তরিত হচ্ছে । $FILEশেলটি সম্প্রসারণ না করতে আপনার সামনে একটি ব্যাকস্ল্যাশ লাগানো দরকার ।


0

আজ আপনি জিএনইউ সমান্তরাল --pipeবিকল্পটি ব্যবহার করবেন :

parallel --seqreplace // "zcat {} | parallel --pipe -N 10 gzip '>{.}.{#}.gz'" ::: big_file0.gz big_file1.gz

যদি আপনি সংযোজনে ঠিক থাকেন big_file0.gz big_file1.gzতবে এটি আরও সহজ:

zcat big_file0.gz big_file1.gz | parallel --pipe -N 10 gzip '>{#}.gz'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.