Metin gibi görünen ikili dosyaları nasıl okurum?


76

Metin olması gereken ikilik dosyalarım var (dışa aktarılan günlükler), ancak daha azıyla açamıyorum (çirkin görünüyor - bir ikili dosya gibi görünüyor). Vi ile açabileceğimi ve onu yakalayabileceğimi buldum (gerçek kütükleri göreceksiniz), ancak gerçekten yapmak istediğim şey onların arasında dolaşmak (her birini vi ile açmadan ve sonra gerçekleştirmeden) arama). Bunu yapmamın bir yolu var mı?



11
Denedin grep -ami
kuantumların

Yanıtlar:


85

grepYine de dosyayı aramak için kullanabilirsiniz - giriş dosyasının gerçekten metin olup olmaması pek de önemli değil. 'Adam grep' den:

    -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.

Lütfen ikinci paragrafın sonunda dikkat kelimelerini işaretleyiniz. Grep'ten gelen sonuçları yeni bir dosyaya yönlendirmek ve vi / less ile incelemek isteyebilirsiniz.


grep gerçekten çalışmıyor. Bir depolama cihazında grep'i deneyin. hafızası tükenir. makul uzunluktaki hatlara bağlı kırık bir iç tamponlama mekanizmasına sahiptir.
kullanıcı239558

41

stringsSadece metni bırakarak tüm ikili kodları çıkartacak şekilde içinden geçirin.


stringsgörünüşe göre utf-8'in metin olduğunu anlamıyor.
Javier

6

Ver bgrepbir deneyin. ( orijinal sürüm / daha yeni çatal )


Bence buradaki en iyi cevap bu. Buradaki gibi ikili aramaların kötü uygulamalarını görmek çok sinir bozucu. Commandlinefu.com/commands/matching/grep-binary/… burada kaçanlar \xgerçekten çalışmaz grep -P "\x05\x00\xc0" mybinaryfile.
Léo Léopold Hertz 준영

Ben koşmak bgrep "fafafafa" test_27.6.2015.bin |lessama olsun test_27.6.2015.bin: 00005ee4 . Bunu aradığımdan beri fafafafa olsun diye düşünürdüm . Erkeklerde manüel yok. Neden böyle bir çıktı herhangi bir fikrin var mı?
Léo Léopold Hertz 준영

Bgrep'in işleyişi hakkında yeni bir konu açtım stackoverflow.com/q/31135561/54964
Léo Léopold Hertz 준영

fark ne grep -a?
rubo77

Maalesef bash: bgrep: command not found...ve No package bgrep available.

5

Bu üç komutu kullanabilirsiniz:

  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>


tr, solaris 10 kutum üzerinde çalışmıyor gibi görünüyor. Basit test: echo -e 'x \ ty' | tr '[\ 000- \ 011 \ 013- \ 037 \ 177- \ 377]' ' sekmeyi çevirmiyor.
user55570

1

Grep 2.21 ile başlayarak, ikili dosyalar farklı şekilde ele alınır :

İkili veri ararken, grep artık metin olmayan baytları satır sonlandırıcı olarak kabul edebilir. Bu, performansı önemli ölçüde artırabilir.

Öyleyse şimdi olan, ikili verilerde, tüm metin olmayan baytların (yeni satırlar dahil) satır sonlandırıcıları olarak kabul edilmesidir. Bu davranışı değiştirmek istiyorsanız, şunları yapabilirsiniz:

  • kullanın --text. Bu, yalnızca yeni satırların satır sonlandırıcılar olmasını sağlar

  • kullanın --null-data. Bu, yalnızca boş baytların satır sonlandırıcılar olmasını sağlar

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.