প্রশ্ন আমি কিভাবে টেক্সট মত চেহারা বাইনারি ফাইলের মাধ্যমে grep করবেন না?


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


76
2017-11-05 15:03


উত্স


serverfault.com/questions/51477/... - quanta
তুমি কি চেষ্টা করেছিলে grep -a? - quanta
stackoverflow.com/questions/9988379/... - Ciro Santilli 新疆改造中心 六四事件 法轮功


উত্তর:


তুমি ব্যবহার করতে পার 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.

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


85
2017-11-05 15:48



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


মাধ্যমে এটি পাইপ strings, যা শুধুমাত্র টেক্সট রেখে বাইনারি কোড সব ফালা আউট হবে।


41
2017-11-05 15:09



গ্রেট ধারণা, ধন্যবাদ :) [না OP] - Karel Bílek
strings দৃশ্যত বোঝে না utf-8 টেক্সট। - Javier


দিন bgrep একটি চেষ্টা. (মূল প্রকাশ / আরো সাম্প্রতিক ফর্ক)


6
2017-11-05 16:07



আমি এই এখানে সেরা উত্তর মনে হয়। এটা এখানে মত বাইনারি অনুসন্ধান খারাপ বাস্তবায়ন দেখতে তাই বিরক্তিকর commandlinefu.com/commands/matching/grep-binary/... যেখানে escaping \x সত্যিই এখানে মত কাজ করে না grep -P "\x05\x00\xc0" mybinaryfile। - Léo Léopold Hertz 준영
আমি দৌড়াই bgrep "fafafafa" test_27.6.2015.bin |less কিন্তু পেতে test_27.6.2015.bin: 00005ee4। আমি পেতে অনুমান করা হবে fafafafa, আমি এই অনুসন্ধান ছিল। মানুষের মধ্যে কোন ম্যানুয়াল। কোন ধারণা কেন এমন একটি আউটপুট? - Léo Léopold Hertz 준영
আমি এখানে bgrep এর কার্যকারিতা সম্পর্কে একটি নতুন থ্রেড খোলা stackoverflow.com/q/31135561/54964 - Léo Léopold Hertz 준영
পার্থক্য কি grep -a? - rubo77
দুর্ভাগ্যবশত, bash: bgrep: command not found... এবং No package bgrep available। - jww


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

  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>


5
2018-06-17 10:43



tr আমার সৌরজ 10 বাক্সে কাজ বলে মনে হচ্ছে না। সহজ পরীক্ষা: echo -e 'x \ ty' | TR '[\ 000- \ 011 \ 013- \ 037 \ 177- \ 377]' '।' ট্যাব অনুবাদ করা হয় না। - user55570


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

বাইনারি তথ্য অনুসন্ধান করার সময়, grep এখন অ-টেক্সট বাইট লাইন হিসাবে আচরণ করতে পারে   terminators। এই উল্লেখযোগ্যভাবে কর্মক্ষমতা বৃদ্ধি করতে পারেন।

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

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

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


1
2017-07-18 00:19