জায়গায় জায়গায় কোনও ফাইল বাছাই করার পদ্ধতি


205

যখন আমরা sort fileকমান্ডটি ব্যবহার করি , ফাইলটি এর বিষয়বস্তুগুলি বাছাই করা পদ্ধতিতে দেখায় যদি আমি কোনও ধরণের আউটপুট ছাড়া বাছাই করা ফাইল না চাই তবে কী হয়?


আপনি ফাইলটি বাছাইয়ের ফলাফলটি দিয়ে কী করতে চান তা পরিষ্কারভাবে জানাতে আপনার প্রশ্নটি আপডেট করুন। আপনি কি fileএকই ফাইলের বাছাই করা সামগ্রীগুলির অরসোর্টড সামগ্রীগুলি প্রতিস্থাপন করে, এটি জায়গায় স্থানबद्ध করতে চান ? আপনার প্রশ্নটি বর্তমানে যেভাবে বলা হয়েছে, কিছুই করার কিছু নেই সঠিক উত্তর (আপনি কোনও আউটপুট চান না, তাই কিছু করবেন না)।
কিথ থম্পসন

@ কিথথম্পসন আপনার উদ্বেগের জন্য আসলে ধন্যবাদ, আমি একটি ফাইল বাছাই করার চেষ্টা করছিলাম কিন্তু পর্দার আউটপুট এড়াতে চাই।
আলী সাজিদ

আপনি কোথায় আউটপুট যেতে চান? একটি নতুন ফাইলের মধ্যে? মূল ফাইলের মধ্যে? হলের নিচে প্রিন্টারের কাছে?
কিথ থম্পসন

1
অরিগনাল ফাইলে
আলি সাজিদ

চালান sort infile >outfileএবং আপনি বাছাই করা আউটপুট "ফাইল" আউটফাইলে পাবেন। তারপরে আপনি আসল "পীড়ন" মুছতে পারেন এবং সবকিছু ঠিক হয়ে যাবে।
লুইস কলোরাডো

উত্তর:


407

বাছাই করা আউটপুট পুনঃনির্দেশ করতে আপনি ফাইল পুনঃনির্দেশ ব্যবহার করতে পারেন:

sort input-file > output_file

অথবা আপনি ব্যবহার করতে পারেন -o, --output=FILEসাজানোর বিকল্প একই ইনপুট এবং আউটপুট ফাইল নির্দেশ করে:

sort -o file file

দ্রষ্টব্য: একটি সাধারণ ভুল হ'ল আউটপুটটিকে একই ইনপুট ফাইলে পুনঃনির্দেশ করার চেষ্টা করা (যেমন sort file > file)। শেলটি পুনর্নির্দেশগুলি তৈরি করায় এটি কাজ করবে না ( সাজ্ট (1) প্রোগ্রাম নয়) এবং ইনপুট ফাইল (আউটপুট হিসাবেও) মুছে ফেলা হবে সাজানোর (1) প্রোগ্রামটি পড়ার সুযোগ দেওয়ার ঠিক আগে ।


88
সাধারণ
ভুলটির

1
আপনি যখন ল্যাটেক্সের জন্য ম্যানুয়ালি অভিধান সম্পাদনা করতে হবে তখন এটি সত্যিই কার্যকর হবে, +1
ব্রায়সন এস

6
শুধু অর্ডার গুরুত্ব উল্লেখ করতে। GNU sortতথ্য পৃষ্ঠা থেকে : -o OUTPUT-FILE' --output = OUTPUT-FILE 'স্ট্যান্ডার্ড আউটপুট পরিবর্তে OUTPUT-FILE এ আউটপুট লিখুন। নতুন সিস্টেমে, -o' cannot appear after an input file if POSIXLY_CORRECT 'সেট করা আছে, যেমন, sort F -o F'. Portable scripts should specify কোনও ইনপুট ফাইলের আগে -OOUUTUT -FILE'।
ইয়াসাইন এলবাডাউই

14
ফাইলের sort -o file{,}
নামটি

65

sortকমান্ড ডিফল্টরূপে মানক আউটপুটে বাছাই অপারেশন ফলাফলের ছাপে। "ইন-প্লেস" বাছাই করতে, আপনি এটি করতে পারেন:

sort -o file file

এটি fileসাজানো আউটপুট সহ ইনপুট ওভাররাইট করে । -oসুইচ, একটি আউটপুট নির্দিষ্ট করতে ব্যবহার করা হয়, POSIX দ্বারা সংজ্ঞায়িত করা হয় , তাই সব সংস্করণের উপর পাওয়া উচিত sort:

-o স্ট্যান্ডার্ড আউটপুটের পরিবর্তে ব্যবহৃত কোনও আউটপুট ফাইলের নাম উল্লেখ করুন। এই ফাইলটি ইনপুট ফাইলগুলির মধ্যে একটির মতো হতে পারে।

আপনি যদি সুইচ sortব্যতীত কোনও সংস্করণ পাওয়ার জন্য দুর্ভাগ্যজনক হন -o( লুইস আমাকে আশ্বাস দেয় যে তাদের উপস্থিত রয়েছে), আপনি স্ট্যান্ডার্ড উপায়ে একটি "ইন-প্লেস" সম্পাদনা অর্জন করতে পারেন:

sort file > tmp && mv tmp file

2
+ best সেরা উত্তরের জন্য, এবং অস্পষ্ট প্রশ্ন সহ, তবে এখনও শীর্ষ পৃষ্ঠার র‌্যাঙ্কে তাই বর্ধন প্রয়োজন needs
u2n


4

জায়গায় জায়গায় বাছাই করতে চেষ্টা করুন:

echo "$(sort your_file)" > your_file

অন্যান্য উত্তরে যেমন ব্যাখ্যা করা হয়েছে, আপনি আউটপুটটিকে সরাসরি ইনপুট ফাইলে পুনঃনির্দেশ করতে পারবেন না। তবে আপনি sortপ্রথমে কমান্ডটি মূল্যায়ন করতে পারেন এবং তারপরে এটিকে মূল ফাইলে পুনর্নির্দেশ করতে পারেন। এইভাবে আপনি ইন-প্লেস ক্রম প্রয়োগ করতে পারেন।

একইভাবে, আপনি এই কৌতুকটি অন্যান্য কমান্ডেও প্রয়োগ করতে পারেন যেমন pasteসারি-ভিত্তিক সংযোজন প্রয়োগ করা।


1
কারণ এটি হবে বড় ফাইল জন্য কাজ, বিভক্তি নতুন লাইন, পটির এই খারাপ echoPOSIX মধ্যে ব্যাকস্ল্যাশ বেরিয়ে সাথে বিশৃঙ্খলা করতে পারেন, এবং -oযেমন এ ব্যাখ্যা ইনপুট হিসাবে একই ফাইলের জন্য কাজ করে: stackoverflow.com/a/29244387/895245
সিরো Santilli郝海东病 病 六四 事件 法轮功

4

এখানে একটি অ্যাপ্রোচ যা (আব) ব্যবহার করে vim:

vim -c :sort -c :wq -E -s "${filename}"

-c :sort -c :wqপরে ফাইল খোলে অংশ পূজা কমান্ড তেজ করতে। -Eএবং -sপ্রয়োজনীয় যাতে ভিআইএম "হেডলেস" মোডে কার্যকর করে যা টার্মিনালে আঁকেনি।

sort -o "${filename}" "${filename}"এটির জন্য কেবলমাত্র ফাইল নাম যুক্তিটি গ্রহণ করা ব্যতীত এ পদ্ধতির প্রায় কোনও সুবিধা নেই ।


ফাইলগুলির জন্য formatterএকটি nanorcএন্ট্রিতে একটি নির্দেশিকা কার্যকর করতে এটি আমার পক্ষে কার্যকর ছিল .gitignore। আমি এর জন্য যা ব্যবহার করেছি তা এখানে:

syntax "gitignore" "\.gitignore$"

formatter vim -c :sort -c :wq -E -s

4
আপনি আপনার ভিএম ব্যবহার করছেন nanorc? ওহ বিড়ম্বনা।
ব্রেট হলম্যান

2

আপনি কি কোনও ফোল্ডারে এবং সমস্ত ফোল্ডারগুলিকে ওভাররাইড করে সমস্ত ফাইল বাছাই করতে চান?

এটা ব্যবহার কর:

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