হ্যাঁ. আপনি এটি করতে পারেন / tr
একটি ASCII লোকালে (যা tr
কোনওভাবে GNU এর জন্য এটির একমাত্র পূর্বরূপ) । আপনি পসিক্স ক্লাস ব্যবহার করতে পারেন বা প্রতিটি অক্ষরের বাইট মানগুলি অষ্টাল সংখ্যা দ্বারা রেফারেন্স করতে পারেন। আপনি পাশাপাশি তাদের ব্যাপ্তিগুলি বিভাজন করতে পারেন।
LC_ALL=C tr '[:upper:]\0-\101\133-140\173-\377' '[:lower:][\n*]' <input
উপরের কমান্ডটি সমস্ত বড় হাতের অক্ষরকে ছোট হাতের অক্ষরে রূপান্তরিত করবে, ছোট হাতের অক্ষরকে সম্পূর্ণ উপেক্ষা করবে এবং অন্যান্য সমস্ত অক্ষরকে নতুন লাইনে রূপান্তর করবে। অবশ্যই, তারপরে আপনি এক টন ফাঁকা লাইন দিয়ে বাতাস আপ করুন। tr
-s
Queeze পুনরাবৃত্তি সুইচ যে ক্ষেত্রে উপযোগী হতে পারে, কিন্তু আপনি যদি পাশাপাশি এটি ব্যবহার [:upper:]
করার জন্য [:lower:]
তারপর রূপান্তর আপনি পাশাপাশি বড় হাতের অক্ষর পিষণ গুটান। সেভাবে এটির জন্য এখনও দ্বিতীয় ফিল্টার দরকার ...
LC... tr ... | tr -s \\n
... অথবা ...
LC... tr ... | grep .
... এবং তাই এটি করার চেয়ে অনেক কম সুবিধাজনক হয়ে উঠছে ...
LC_ALL=C tr -sc '[:alpha:]' \\n <input | tr '[:upper:]' '[:lower:]'
... যা -c
বর্ণানুক্রমিক অক্ষরের ক্রমবর্ধমান ক্রম অনুসারে একটি একক নিউলাইনকে এক টুকরো টুকরো টুকরো করে তোলে, তারপরে পাইপটির অন্যদিকে পরিবর্তিত করে উপরের থেকে নীচে রূপান্তর করে।
এর অর্থ এই নয় যে প্রকৃতির সীমাগুলি কার্যকর নয়। স্টাফ যেমন:
tr '\0-\377' '[1*25][2*25][3*25][4*25][5*25][6*25][7*25][8*25][9*25][0*]' </dev/random
... এটি খুব সহজেই কার্যকর হতে পারে কারণ এটি ইনপুট বাইটগুলিকে তাদের মানগুলির স্প্রেড্রামের মধ্যে সমস্ত সংখ্যায় রূপান্তর করে। নষ্ট করবেন না, চান না, আপনি জানেন।
রূপান্তরটি করার অন্য একটি উপায় জড়িত হতে পারে dd
।
tr '\0-\377' '[A*64][B*64][C*64][D*64]' </dev/urandom |
dd bs=32 cbs=8 conv=unblock,lcase count=1
dadbbdbd
ddaaddab
ddbadbaa
bdbdcadd
যেহেতু একই সাথে dd
উভয় রূপান্তর unblock
ও lcase
রূপান্তর করতে পারে, কাজটির বেশিরভাগ অংশ এটি পাঠানোও সম্ভব হতে পারে। তবে এটি কেবলমাত্র তখনই কার্যকর হতে পারে যদি আপনি প্রতি শব্দ প্রতি বাইটের সংখ্যাটি নির্ভুলভাবে পূর্বাভাস দিতে পারেন - বা কমপক্ষে প্রতিটি শব্দ ফাঁকা দিয়ে আগেই অনুমানযোগ্য বাইট গণনা করতে পারেন, কারণ unblock
প্রতিটি ব্লকের শেষে ট্রেলিং স্পেস খায়।