উত্তর:
আপনি awk
যে জন্য ব্যবহার করতে পারেন ।
command | awk '{ if (/pattern/) { print > "match" } else { print > "nomatch" } }'
>
বিদ্যমান ফাইলগুলি ওভাররাইট করে ফাইলটিতে সমস্ত আউটপুট প্রিন্ট করে। এটি এমনভাবে মূল্যায়ন করা হয় না যে এর ফলে কোনও নতুন লাইন একই উদাহরণ থেকে পুরানো আউটপুটকে ওভাররাইট করে awk
। অর্থাৎ, যদি সেখানে একাধিক মিল নেই, ফাইল "ম্যাচ" প্রতিটি ম্যাচ দিয়ে আলাদা করা থাকতে হবে OFS
। বিদ্যমান ফাইলগুলির চিকিত্সার মধ্যে পার্থক্য >
এবং >>
বিদ্যমান।
এখানে একটি sed
উদাহরণ রয়েছে:
দ্রষ্টব্য: সিডের w
কমান্ডটি স্ক্রিপ্টটি চালানোর সময় একটি বিদ্যমান ফাইলকে ওভাররাইট করবে, তবে কেবলমাত্র সেই নির্দিষ্ট লিখিত কমান্ড ট্রিগার করা হলে; অত: পরrm
rm -f file-{yes,not}
sed -ne '/pattern/bY; w file-not' -e 'b; :Y; w file-yes' file
sed -n '/PATTERN/p;//! w file-not' infile >file-yes
আপনি জোর করে ফাইল যুক্ত করতে পারেন:
awk '{if (/pattern/) print >>"matched"; else print >>"unmatched"; }
বা সংক্ষিপ্ত:
awk '{print >>(/pattern/?"matched":"unmatched")}'
awk
তবে এটি কোন মুহুর্তে মূল্যায়ন করে>
? শর্তসাপেক্ষে প্রযোজ্য প্রতিবার যদি এটি মূল্যায়ন করা হয় তবে আপনি দুটি এক-লাইন ফাইল দিয়ে শেষ করতে চান ...