Como suprimir resultados de correspondência de arquivos binários no grep [closed]


215

Ao usar grepno linux, o resultado geralmente contém muitas "correspondências de arquivos binários XXX", das quais não me importo. Como suprimir essa parte dos resultados ou como excluir arquivos binários no grep?


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

1
@skwllsp Mas com -l, os resultados não contêm a linha correspondente, apenas o nome do arquivo correspondente.
precisa saber é o seguinte

Existe uma opção para as linhas: grep -I -n -H

6
Isso está fora de tópico? Wow
CoffeeTableEspresso

Respostas:


302

Existem três opções que você pode usar. -Ié excluir arquivos binários no grep. Outros são para números de linhas e nomes de arquivos.

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

Portanto, essa pode ser uma maneira de executar o grep:

grep -InH your-word *

isso funciona. Thx @skwllsp
RandyTek

7
Eu usaria -Irnonde rsignifica recursivo procurar dentro de todas as pastas. Hé exsessive aqui
vladkras 19/04/16

@ vladkras, "H é exsessivo aqui" - você quer dizer redundante, ou seja, já é o padrão?
cp.engr 21/02

Obrigado por esclarecer o que as opções curtas significam em sua resposta. Existem tantas respostas de comandos linux concisas no SO que não dão explicações, o que acho irritante.
jrahhali

1
@AaronFranke: A -nbandeira diz ao grep para informar os números de linha dos arquivos nos quais encontrou uma correspondência. "Baseado em 1" significa que a contagem de linhas começa de um em vez de zero, como geralmente é feito na programação. Portanto, se a primeira linha do seu arquivo nomeada example.txtfor Hello, world, a segunda linha é Hello cate a terceira linha é cats are cool, então, procurando por "cat" via grep -n cat example.txt, você obteria example.txt:2: Hello cate example.txt:3: cats are cool.
Jvriesem

11

Esta é uma pergunta antiga e foi respondida, mas pensei em colocar a opção --binary-files = text aqui para quem quiser usá-la. A opção -I ignora o arquivo binário, mas se você deseja que o grep trate o arquivo binário como um arquivo de texto, use --binary-files = text da seguinte maneira:

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$
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.