আমার একটি বড় ফাইল আছে এবং দুটি ফাইলে বিভক্ত হওয়া দরকার। মনে করুন প্রথম ফাইলটিতে 1000 লাইনগুলি নির্বাচন করে অন্য একটি ফাইলে রাখা উচিত এবং সেই ফাইলগুলি প্রথম ফাইলটিতে মুছুন।
আমি ব্যবহার করার চেষ্টা করেছি split
কিন্তু এটি একাধিক অংশ তৈরি করছে।
আমার একটি বড় ফাইল আছে এবং দুটি ফাইলে বিভক্ত হওয়া দরকার। মনে করুন প্রথম ফাইলটিতে 1000 লাইনগুলি নির্বাচন করে অন্য একটি ফাইলে রাখা উচিত এবং সেই ফাইলগুলি প্রথম ফাইলটিতে মুছুন।
আমি ব্যবহার করার চেষ্টা করেছি split
কিন্তু এটি একাধিক অংশ তৈরি করছে।
উত্তর:
সবচেয়ে সহজ উপায় সম্ভবত ব্যবহার করা head
এবং tail
:
$ head -n 1000 input-file > output1
$ tail -n +1001 input-file > output2
যে থেকে প্রথম 1000 লাইন করা হবে input-file
মধ্যে output1
শেষ পর্যন্ত 1001 থেকে, এবং সমস্ত লাইনoutput2
আমি মনে করি split
এটিই আপনি সেরা পন্থা।
-l xxxx
বিকল্পটি ব্যবহার করার চেষ্টা করুন , যেখানে প্রতিটি ফাইলটিতে xXXx আপনার পছন্দ মতো লাইনের সংখ্যা (ডিফল্ট 1000)।
আপনি -n yy
যদি ফাইল তৈরির পরিমাণ সম্পর্কে আরও উদ্বিগ্ন হন তবে আপনি বিকল্পটি ব্যবহার করতে পারেন । -n 2
প্রতিটি ফাইলের রেখার পরিমাণ নির্বিশেষে ব্যবহারের ফলে আপনার ফাইলটি কেবল 2 অংশে বিভক্ত হবে।
আপনি নিজের ফাইলটিতে রেখার পরিমাণ গণনা করতে পারেন wc -l filename
। লাইন অপশন সহ এটি 'ওয়ার্ডকাউন্ট' কমান্ড।
man split
man wc
split -l 1000 bigfile && mv xaa piece1 && cat x?? > piece2 && rm x??
।
এটি একটি কাজ csplit
:
csplit -s infile 1001
s
নিখরচায় বিভক্ত হবে infile
, প্রথম টুকরা xx00
- 1001 লাইন এবং দ্বিতীয় টুকরা সহ xx01
- বাকি লাইনগুলি অন্তর্ভুক্ত নয়।
আপনি যদি বিভিন্ন আউটপুট ফাইলের নাম প্রয়োজন যেমন -f
একটি উপসর্গ ব্যবহার এবং নির্দিষ্ট করে থাকেন তবে আপনি অপশনগুলির সাথে খেলতে পারেন :
csplit -sf piece. infile 1001
নামে দুটি ফাইলের উত্পাদন করে piece.00
এবংpiece.01
স্মার্ট দিয়ে head
আপনি এমন কিছু করতেও পারেন:
{ head -n 1000 > 1st.out; cat > 2nd.out; } < infile
csplit
। খুব সুন্দর. (আমি কেবল পসিক্স কমান্ডের তালিকাটি পড়ছি এবং csplit
কমান্ডের উদ্দেশ্যটি সম্পর্কে প্রথমে আমার মাথাটি জড়িয়ে থাকাতে প্রচণ্ড সমস্যা হয়েছিল Turn এটি সত্যই সত্যই সক্রিয় s) :)
প্রশ্নটি যা জিজ্ঞাসা করে তা করার একটি সহজ উপায়, একটি কমান্ডে:
awk '{ if (NR <= 1000) print > "piece1"; else print > "piece2"; }' bigfile
বা, আপনার মধ্যে যারা দীর্ঘ, স্বজ্ঞাত বোঝা যায় এমন আদেশগুলি টাইপ করতে সত্যই ঘৃণা করেন,
awk '{ print > ((NR <= 1000) ? "piece1" : "piece2"); }' bigfile
split --help
?