আপনার প্রস্তাবিত উদাহরণটি (নীচে) কাজ করে না কারণ আপনি একই সাথে একই ফাইল থেকে পড়তে এবং লিখতে চাইছেন।
$ cat filename | sort | uniq > filename
একটি পাইপ বা পুনঃনির্দেশ সহ ধারণাটি হ'ল প্রতিটি পাইপের বাম এবং ডানদিকে কমান্ডটি সমান্তরালভাবে একই সাথে চালিত হয়। বাম দিকের কমান্ডটি যখন বাম দিকের কমান্ডটি চলমান রয়েছে তখন ডান দিকের কমান্ড তথ্য প্রসেস করে।
আপনার দৃশ্যের কাজ করার জন্য, ফাইল থেকে পড়া কমান্ডটি ফাইলটিতে লেখা কমান্ডটি শুরু হওয়ার আগে শেষ করা উচিত। এটি কাজ করার জন্য আপনাকে প্রথমে আউটপুটটিকে একটি অস্থায়ী স্থানে পুনর্নির্দেশ করতে হবে, তারপরে এটি শেষ হয়ে গেলে অস্থায়ী অবস্থান থেকে ফাইলটিতে ফিরে পাঠাতে হবে।
এটি করার একটি আরও ভাল উপায় মূলত আপনার পূর্ববর্তী উদাহরণের মতো, যেখানে আপনি কোনও অস্থায়ী ফাইলে পুনর্নির্দেশ করেন তারপরে সেই ফাইলটির পুনরায় নামকরণ করুন মূলটিকে (আপনার প্রথমে ফাইলটি মুছতে হবে না, কারণ সরানো কোনও বিদ্যমান লক্ষ্য মুছে ফেলে) ।
$ cat filename | sort | uniq > result
$ mv -f result filename
আপনি এটিকে স্ট্রিং ভেরিয়েবলেও সংরক্ষণ করতে পারেন, কেবলমাত্র তখনই কাজ করা হয় যখন ডেটা একবারে মেমরির জন্য উপযুক্ত পরিমাণে যথেষ্ট পরিমাণে হয়।
echo $(cat filename | sort | uniq > result) > filenameঅথবা অন্যকিছু ? কেবল পাশ কাটিয়ে আমার চেষ্টা করার সময় নেই to