Cách chặn kết quả khớp tệp nhị phân trong grep [đã đóng]


215

Khi sử dụng greptrong linux, kết quả thường chứa rất nhiều "tệp nhị phân XXX khớp", điều mà tôi không quan tâm. Làm cách nào để loại bỏ phần kết quả này hoặc làm thế nào để loại trừ các tệp nhị phân trong grep?


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

1
@skwllsp Nhưng với -l, kết quả không chứa dòng trùng khớp, chỉ với tên tệp trùng khớp.
RandyTek

Có một tùy chọn cho các dòng: grep -I -n -H

6
Đây là lạc đề? Wow
CoffeeTableEspresso

Câu trả lời:


301

Có ba lựa chọn, bạn có thể sử dụng. -Ilà để loại trừ các tệp nhị phân trong grep. Khác là cho số dòng và tên tập tin.

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

Vì vậy, đây có thể là một cách để chạy grep:

grep -InH your-word *

những công việc này. Thx @skwllsp
RandyTek

7
Tôi sẽ sử dụng -Irnvị trí rviết tắt cho đệ quy để xem bên trong tất cả các thư mục. Hlà tuyệt vời ở đây
vladkras

@vladkras, "H is exessessive here" - ý bạn là dư thừa, tức là nó đã là mặc định?
cp.engr

Cảm ơn bạn đã làm rõ ý nghĩa của các tùy chọn ngắn trong câu trả lời của bạn. Có rất nhiều câu trả lời lệnh linux ngắn gọn trên SO không đưa ra lời giải thích, điều mà tôi thấy khó chịu.
jrahhali

1
@AaronFranke: -nCờ báo cho grep báo cáo số dòng của các tệp trong đó tìm thấy kết quả khớp. "Dựa trên 1" có nghĩa là việc đếm dòng bắt đầu từ một chứ không phải bằng 0, như thường được thực hiện trong lập trình. Vì vậy, nếu dòng đầu tiên của tệp của bạn có tên example.txtHello, world, dòng thứ hai là Hello catvà dòng thứ ba là cats are cool, sau đó tìm kiếm "cat" thông qua grep -n cat example.txt, bạn sẽ nhận được example.txt:2: Hello catexample.txt:3: cats are cool.
jvriesem

11

Đây là một câu hỏi cũ và nó đã được trả lời nhưng tôi nghĩ rằng tôi đã đặt tùy chọn --binary-files = text cho bất kỳ ai muốn sử dụng nó. Tùy chọn -I bỏ qua tệp nhị phân nhưng nếu bạn muốn grep coi tệp nhị phân là tệp văn bản, hãy sử dụng --binary-files = text như vậy:

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$
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.