O que são ferramentas alternativas para pesquisar arquivos em conteúdo completo?

0

Eu percebi que a maioria das ferramentas de texto que eu uso, grep / egrep / awk / sed, são orientadas a linhas. Eu acho que é uma abordagem simplificada para pesquisar em arquivos, mas eu queria saber se há outro conjunto de ferramentas que operam em nível de arquivo que eu não estou ciente.

Existem outras ferramentas que pesquisam todo o conteúdo de um arquivo sem usar o modo de linha?

    
por Jim 12.02.2014 / 22:40

4 respostas

2

grep

Se você estiver interessado apenas nos nomes dos arquivos que contêm uma string de pesquisa 1 vez, poderá usar grep com sua opção -l para fazer isso.

Exemplo

Digamos que eu tenha 2 arquivos cheios de números.

$ seq 100 > sample1.txt
$ seq 100 > sample2.txt

Agora, se eu pesquisar esse arquivo em busca de ocorrências da string "10".

$ grep -l 10 sample*.txt 
sample1.txt
sample2.txt

Ele só retornará os arquivos que contêm uma correspondência 1 vez, mesmo se houver várias linhas correspondentes. Como prova, se eu tirar a -l :

$ grep 10 sample*.txt 
sample1.txt:10
sample1.txt:100
sample2.txt:10
sample2.txt:100

pcregrep

Se você quiser pesquisar padrões em várias linhas, use pcregrep juntamente com sua opção -M para várias linhas.

$ pcregrep -M "11[\n,]*.*12" sample*
sample1.txt:11
12
sample2.txt:11
12
    
por 12.02.2014 / 23:22
2

Perl oferece a você um modo "slurp de arquivo":

echo "foo
bar
baz" |
perl -0777 -ne 'print "found it" if /foo\s+bar/'

A opção -0777 é a chave. O arquivo inteiro é lido na memória, onde você pode operá-lo.

    
por 12.02.2014 / 22:55
1

Para o código, há ack , é incrível e pode ser específico do idioma ou agnóstico de idioma.

    
por 12.02.2014 / 22:44
1

A documentação GNU coreutils é bem organizada em torno de arquivos, linhas, campos e operações e ferramentas orientadas a caracteres que funcionam neles. Confira aqui .

    
por 12.02.2014 / 23:42