Grep ikili dosya eşleştirme sonuçları nasıl bastırılır [kapalı]


215

grepLinux'ta kullanıldığında , sonuç genellikle umursamadığım birçok "ikili dosya XXX eşleşmesi" içerir. Sonuçların bu bölümünü nasıl bastırırsınız veya grep'te ikili dosyaları nasıl hariç tutarsınız?


12
grep -I .........

1
@skwllsp Ancak -l ile, sonuçlar eşleşen satırı içermez, sadece eşleşen dosya adıyla.
RandyTek

Çizgiler için bir seçenek vardır: grep -I -n -H

6
Bu konu dışı mı? Vay be
CoffeeTableEspresso

Yanıtlar:


302

Kullanabileceğiniz üç seçenek vardır. -Igrep içindeki ikili dosyaları hariç tutmaktır. Diğer satır numaraları ve dosya adları içindir.

grep -I -n -H 


-I -- process a binary file as if it did not contain matching data; 
-n -- prefix each line of output with the 1-based line number within its input file
-H -- print the file name for each match

Yani bu grep'i çalıştırmanın bir yolu olabilir:

grep -InH your-word *

bu çalışıyor. Thx @skwllsp
RandyTek

7
Bana kalırsa doğru -Irnyerde rtüm klasörlerin içine bakmak için özyinelemeli anlamına gelir. Hburada exsessive
vladkras

@vladkras, "H burada abartılı" - yani gereksiz, yani zaten varsayılan mı?
cp.engr

Cevabınızdaki kısa seçeneklerin ne anlama geldiğini açıkladığınız için teşekkür ederiz. SO üzerinde sinir bozucu bulduğum hiçbir açıklama yapmayan çok fazla linux komut yanıtı var.
jrahhali

1
@AaronFranke: -nBayrak grep'e bir eşleşme bulduğu dosyaların satır numaralarını bildirmesini söyler. "1 tabanlı", satır sayımının programlamada sık sık yapıldığı gibi sıfır yerine birinden başladığı anlamına gelir. Yani, dosyanızın ilk satırı isimlendirilirse example.txt, Hello, worldikinci satır Hello catve üçüncü satır ise cats are cool"cat" araması yoluyla grep -n cat example.txt, example.txt:2: Hello catve alırsınız example.txt:3: cats are cool.
jvriesem

11

Bu eski bir soru ve cevaplandı ama ben kullanmak isteyen herkes için --binary-files = metin seçeneğini buraya koyacağımı düşündüm. -I seçeneği ikili dosyayı yok sayar, ancak grep'in ikili dosyayı bir metin dosyası olarak ele almasını istiyorsanız --binary-files = şu şekilde metin kullanın:

bash$ grep -i reset mediaLog*
Binary file mediaLog_dc1.txt matches
bash$ grep --binary-files=text -i reset mediaLog*
mediaLog_dc1.txt:2016-06-29 15:46:02,470 - Media [uploadChunk  ,315] - ERROR - ('Connection aborted.', error(104, 'Connection reset by peer'))
mediaLog_dc1.txt:ConnectionError: ('Connection aborted.', error(104, 'Connection reset by peer'))
bash$
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.