পাঠ্যের মতো দেখতে বাইনারি ফাইলগুলি কীভাবে গ্রিপ করব?


76

আমার কাছে বাইনারি ফাইল রয়েছে যা পাঠ্য হওয়া উচিত (তারা লগগুলি রফতানি করা হয়), তবে আমি এটি কম দিয়ে খুলতে পারি না (এটি দেখতে কুৎসিত দেখাচ্ছে - এটি বাইনারি ফাইলের মতো দেখাচ্ছে)। আমি দেখতে পেয়েছি যে আমি এটি vi এর সাথে খুলতে পারি এবং আমি এটি ক্যাট করতে পারি (আপনি প্রকৃত লগগুলি দেখতে পাবেন) তবে আমি যা করতে চাই তা হ'ল তাদের মাধ্যমে গ্রেপ করা হয়েছে (vi এর সাথে প্রত্যেককে না খোলার এবং তারপরে সম্পাদন করা একটি অনুসন্ধান)। আমার কি করার উপায় আছে?



11
আপনি চেষ্টা করেছেন grep -a?
কোয়ান্টা

উত্তর:


85

আপনি grepফাইলটি সন্ধানের জন্য যে কোনও উপায়ে ব্যবহার করতে পারেন - ইনপুট ফাইলটি সত্যই টেক্সট কিনা তা যত্ন করে না। 'ম্যান গ্রেপ' থেকে:

    -a, --text
          Process a binary file as if it were text; this is equivalent to the --binary-files=text option.

   --binary-files=TYPE
          If  the  first few bytes of a file indicate that the file contains binary data, assume that the file is
          of type TYPE.  By default, TYPE is binary, and grep normally outputs either a one-line  message  saying
          that a binary file matches, or no message if there is no match.  If TYPE is without-match, grep assumes
          that a binary file does not match; this is equivalent  to  the  -I  option.   If  TYPE  is  text,  grep
          processes  a  binary  file  as  if  it  were  text; this is equivalent to the -a option.  Warning: grep
          --binary-files=text might output binary garbage, which can have nasty side effects if the output  is  a
          terminal and if the terminal driver interprets some of it as commands.

সাবধানতার শব্দটিকে দ্বিতীয় অনুচ্ছেদের শেষে চিহ্নিত করুন। আপনি গ্রেপ থেকে ফলাফলগুলি একটি নতুন ফাইলে পুনর্নির্দেশ করতে এবং vi / কম দিয়ে এটি পরীক্ষা করতে চাইতে পারেন।


গ্রেপ সত্যিই কাজ করে না। স্টোরেজ ডিভাইসে গ্রেপ চেষ্টা করুন। এটি স্মৃতিশক্তি শেষ হয়ে যাবে। এটিতে একটি ভাঙা অভ্যন্তরীণ বাফারিং ব্যবস্থা রয়েছে যা যুক্তিসঙ্গত দৈর্ঘ্যের লাইনের উপর নির্ভর করে।
ব্যবহারকারী 239558

41

এটি দিয়ে পাইপ করুন strings, যা বাইনারি কোডের সমস্ত পাঠ্যকে কেবল পাঠ্য রেখে দেবে।


stringsস্পষ্টতই বোঝা যাচ্ছে না utf-8 এটি পাঠ্য।
জাভিয়ের

6

একবার bgrepচেষ্টা করুন। ( মূল প্রকাশ / আরও সাম্প্রতিক কাঁটাচামচ )


আমি মনে করি এটি এখানে সেরা উত্তর। এখানে কমান্ডলাইনফু.কম্যান্ডস / ম্যাচিং / গ্রেপ- বাইনারি / এর মতো বাইনারি অনুসন্ধানের খারাপ বাস্তবায়নগুলি দেখে খুব বিরক্ত হয় যেখানে এখান থেকে পালানো \xআসলে এখানে কাজ করে না grep -P "\x05\x00\xc0" mybinaryfile
লিও লোপোল্ড হার্টজ 준영

আমি দৌড়েছি bgrep "fafafafa" test_27.6.2015.bin |lessতবে পরীক্ষা করুন _27..6.২০১৫.bin: 00005ee4 । আমি ধরে নিচ্ছি ফাফাফাফা , যেহেতু আমি এটি অনুসন্ধান করছিলাম। মানুষের মধ্যে কোন ম্যানুয়াল। কোন ধারণা কেন এমন আউটপুট?
লিও লোপোল্ড হার্টজ 준영

আমি bgrep কার্যকরী এখানে একটি নতুন থ্রেড খুলে stackoverflow.com/q/31135561/54964
Léo লেয়পল হের্ৎস 준영

পার্থক্য কি grep -a?
রুবো 77

দুর্ভাগ্যক্রমে, bash: bgrep: command not found...এবং No package bgrep available

5

আপনি এই তিনটি কমান্ড ব্যবহার করতে পারেন:

  1. grep -a <sth> file.txt

  2. cat -v file.txt | grep <sth>

  3. cat file.txt | tr '[\000-\011\013-\037\177-\377]' '.' | grep <sth>


টিআর আমার সোলারিস 10 বাক্সে কাজ করছে বলে মনে হচ্ছে না। সাধারণ পরীক্ষা: প্রতিধ্বনি-e 'x \ ty' | ট্র '[\ 000- \ 011 \ 013- \ 037 \ 177- \ 377]' '। ট্যাব অনুবাদ করে না।
ব্যবহারকারী 55570

1

গ্রেপ 2.21 দিয়ে শুরু করে, বাইনারি ফাইলগুলি আলাদাভাবে চিকিত্সা করা হয় :

বাইনারি ডেটা অনুসন্ধান করার সময়, গ্রেপ এখন অ-পাঠ্য বাইটগুলিকে লাইন টার্মিনেটর হিসাবে বিবেচনা করতে পারে। এটি পারফরম্যান্সকে উল্লেখযোগ্যভাবে বাড়াতে পারে।

সুতরাং এখন যা ঘটে তা হ'ল বাইনারি ডেটা সহ, সমস্ত অ-পাঠ্য বাইট (নিউলাইনগুলি সহ) লাইন টার্মিনেটর হিসাবে বিবেচিত হয়। আপনি যদি এই আচরণটি পরিবর্তন করতে চান তবে আপনি:

  • ব্যবহার --text। এটি নিশ্চিত করবে যে কেবলমাত্র নতুনলাইনগুলি লাইন টার্মিনেটর

  • ব্যবহার --null-data। এটি নিশ্চিত করবে যে কেবল নাল বাইটগুলি লাইন টার্মিনেটর

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