পাইপলাইনে ফাইল বিভাজন এবং সংক্ষেপণ


3

সুতরাং আমার কাছে এরকম বিশাল ফাইল রয়েছে ...

1/20/2016,somerandomdata
1/20/2016,somerandomdata
1/20/2016,somerandomdata
1/20/2016,somerandomdata
1/21/2016,somerandomdata
1/21/2016,somerandomdata
1/21/2016,somerandomdata
1/21/2016,somerandomdata
1/22/2016,somerandomdata
1/22/2016,somerandomdata
1/22/2016,somerandomdata
1/22/2016,somerandomdata

এবং আমি এটিকে প্রথম কলামের উপর ভিত্তি করে ছোট ছোট ফাইলগুলির গুচ্ছগুলিতে ভাগ করতে চাই। সহজ: এই জাতীয় উপায়ে ব্যবহার করুন:

awk -F '[,/]' '{print > filename$1$2$3".dat"}'

এখানে ধরা আছে: আমি আউটপুট ফাইলগুলি সংকুচিত করতে চাই। সুতরাং, আমি এগিয়ে যেতে এবং সত্য পরে এই কাজ করতে পারে ...

find . -name "filename*.dat" | xargs -l xz

তার সাথে সমস্যাটি হ'ল আমি চাই xxটি ডেটা বিভক্ত হওয়ার পরিবর্তে পাইপলাইনে থাকা উচিত। এটার মতো কিছু:

curl "url" | grep "blah" | xz -c > filename.dat.xz

অবশ্যই, এটি আসলে ফাইলটি বিভক্ত করে না।

পাইপলাইনে এটির কারণটি হ'ল কারণ আমি ডেটা ডাউনলোড করছি এবং একই সাথে সংযুক্তি চালাতে চাইছি পরিবর্তে ডাউনলোডের পরে ing (আমি দৃ sure়ভাবে নিশ্চিত যে এটি জিনিসগুলিকে দ্রুততর করে তুলবে, তবে আমি যদি ভুল হয় তবে আমাকে সংশোধন করুন)

তো, আমার লক্ষ্যটি এমন কিছু ...

curl "url" | grep "blah" | awk -F '[,/]' '{print > filename$1$2$3".dat"}' | xz -c > filename.dat.xz

কিন্তু না, কারণ এটি স্পষ্টতই কাজ করবে না

আপনার যদি আমার সমস্যার আরও ভাল সমাধান থাকে বা আপনি যদি মনে করেন আমি সম্পূর্ণ বোকা কিছু করছি তবে আমি নমনীয়।


এবং আপনি চান যে সমস্ত আউটপুট ফাইলগুলি একটি ফাইলে সংকুচিত হবে? পাইপলাইনে এটি করা যেতে পারে সন্দেহ doubt
গোগৌড

আমি চাই প্রতিটি ফাইল পৃথক পৃথক ফাইলগুলিতে সংকুচিত হোক
জে

1
আমি মনে করি awk পাইপ নিজেই করতে পারেন, অনুপ্রেরণা জন্য এই একটি দেখুন superuser.com/a/485602/307834
Xen2050

উত্তর:


2

উদাহরণস্বরূপ পুনর্নির্দেশগুলির মতোই awk পাইপগুলি "স্থানীয়ভাবে" নিজেই করতে পারে। আমি কোনও বুদ্ধিমান উক্তি বিশেষজ্ঞ নই, তবে এটি আপনার উদাহরণের সাথে মেলে এবং এ-ওকে কাজ করার জন্য রিপোর্ট করা হয়েছে:

awk -F '[,/]' '{print | "xz -c >" filename$1$2$3".dat.xz"}'

না, কাজ করে না ... cat exfile | grep "$dates" | awk -F '[,/]' '{print > "filename"$1$2$3".dat"}' কাজ করে এবং একাধিক ডিকম্প্রেস করা ফাইল আউটপুট, কিন্তু cat exfile | grep "$dates" | awk -F '[,/]' '{print | xz -c > "filename"$1$2$3".dat.xz"}'একটি দেয় syntax error>
জে

আহ, কিন্তু awk -F '[,/]' '{print | "xz -c >" "filename"$1$2$3".dat.xz"}'কাজ করে।
জে

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