Cara menekan hasil pencocokan file biner di grep [ditutup]

215

Ketika menggunakan grep di linux, hasilnya sering berisi banyak "file biner XXX yang cocok", yang tidak saya pedulikan. Bagaimana cara menekan bagian hasil ini, atau bagaimana mengecualikan file biner dalam grep?

RandyTek
sumber
12
grep -Saya .........
1
@ skwllsp Tetapi dengan -l, hasilnya tidak berisi baris yang cocok, hanya dengan nama file yang cocok.
RandyTek
Ada opsi untuk baris: grep -I -n -H
6
Ini di luar topik? Wow
CoffeeTableEspresso

Jawaban:

302

Ada tiga opsi yang bisa Anda gunakan. -Iadalah untuk mengecualikan file biner di grep. Lainnya untuk nomor baris dan nama file.

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

Jadi ini mungkin cara untuk menjalankan grep:

grep -InH your-word *
pengguna184968
sumber
ini bekerja. Thx @skwllsp
RandyTek
7
Saya akan menggunakan -Irnmana rsingkatan rekursif untuk melihat ke dalam semua folder. Hberlebihan di sini
vladkras
@vladkras, "H berlebihan di sini" - maksud Anda berlebihan, artinya sudah default?
cp.engr
Terima kasih telah menjelaskan apa arti opsi singkat dalam jawaban Anda. Ada begitu banyak jawaban perintah linux singkat pada SO yang tidak memberikan penjelasan, yang menurut saya mengganggu.
jrahhali
1
@AaronFranke: -nBendera memberi tahu grep untuk melaporkan nomor baris file tempat ditemukannya kecocokan. "1-based" berarti penghitungan baris dimulai dari satu daripada nol, seperti yang sering dilakukan dalam pemrograman. Jadi, jika baris pertama dari file Anda bernama example.txtadalah Hello, world, baris kedua adalah Hello cat, dan garis ketiga cats are cool, maka mencari "kucing" melalui grep -n cat example.txt, Anda akan mendapatkan example.txt:2: Hello catdan example.txt:3: cats are cool.
jvriesem
11

Ini adalah pertanyaan lama dan sudah dijawab tetapi saya pikir saya akan meletakkan opsi --binary-file = teks di sini untuk siapa saja yang ingin menggunakannya. Opsi -I mengabaikan file biner tetapi jika Anda ingin grep memperlakukan file biner sebagai file teks gunakan --binary-files = teks seperti ini:

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$
amadain
sumber