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?
@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:
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:
Respostas:
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.Portanto, essa pode ser uma maneira de executar o grep:
fonte
-Irn
onder
significa recursivo procurar dentro de todas as pastas.H
é exsessive aqui-n
bandeira 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 nomeadaexample.txt
forHello, world
, a segunda linha éHello cat
e a terceira linha écats are cool
, então, procurando por "cat" viagrep -n cat example.txt
, você obteriaexample.txt:2: Hello cat
eexample.txt:3: cats are cool
.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:
fonte