একটি উপায় হ'ল বাইনারি ফাইলগুলিকে যাইহোক টেক্সট হিসাবে বিবেচনা করা, grep --text
তবে এর ফলে বাইনারি তথ্যগুলি আপনার টার্মিনালে প্রেরণে ভাল ফলাফল হতে পারে। যদি আপনি এমন একটি টার্মিনাল চালাচ্ছেন যা আউটপুট প্রবাহকে ব্যাখ্যা করে (যেমন ভিটি / ডিসি বা আরও অনেকগুলি)।
বিকল্পভাবে, আপনি tr
নিম্নলিখিত কমান্ড দিয়ে আপনার ফাইলটি প্রেরণ করতে পারেন :
tr '[\000-\011\013-\037\177-\377]' '.' <test.log | grep whatever
এটি .
কেবলমাত্র মুদ্রণযোগ্যগুলি রেখে, একটি স্থানের অক্ষর (নিউলাইন ব্যতীত) এবং 126 এর চেয়ে বড় কিছুকে একটি অক্ষরে পরিণত করবে।
আপনি যদি প্রতিটি "অবৈধ" চরিত্রকে আলাদা আলাদা করে প্রতিস্থাপন করতে চান তবে আপনি নিম্নলিখিত সি প্রোগ্রামের মতো কিছু ব্যবহার করতে পারেন, একটি সর্বোত্তম স্ট্যান্ডার্ড ইনপুট ফিল্টার:
#include<stdio.h>
int main (void) {
int ch;
while ((ch = getchar()) != EOF) {
if ((ch == '\n') || ((ch >= ' ') && (ch <= '~'))) {
putchar (ch);
} else {
printf ("{{%02x}}", ch);
}
}
return 0;
}
এটি আপনাকে দেবে {{NN}}
, NN
চরিত্রটির জন্য হেক্স কোডটি কোথায় । আপনি printf
যে স্টাইল আউটপুট চান তা কেবল সামঞ্জস্য করতে পারেন।
আপনি সেই প্রোগ্রামটি এখানে কর্মক্ষেত্রে দেখতে পাবেন যেখানে এটি:
pax$ printf 'Hello,\tBob\nGoodbye, Bob\n' | ./filterProg
Hello,{{09}}Bob
Goodbye, Bob