Quero fazer uma pesquisa regex simples recursivamente através de um diretório que não esteja restrito a linhas únicas.
Eu tentei grep e ack, mas nenhum deles parece apoiar isso.
Eu sei que não deve ser muito computacionalmente caro (no meu caso) porque meu editor de texto preferido ( Sublime Text ) pode fazê-lo perfeitamente.
Estou apenas procurando uma versão simples em linha de comando disso. O Google apareceu pcregrep , mas não consigo encontrar isso no Mac. Eu simplesmente não estou olhando no lugar certo?
grep
com o contexto o ajuda a encontrar o que deseja (-C1
)?Respostas:
Instale o Homebrew e, em seguida:
Isso lhe dará as últimas
pcregrep
fonte
Você não disse exatamente o que estava procurando, então imagino a tarefa de descobrir se o arquivo contém 112 seguido de 223, desconsiderando as novas linhas.
Uma
awk
solução um pouco artificial :A
RS
variável contém o separador de registros. Ao configurá-lo para a sequência vazia, o arquivo inteiro será lido como um registro.Isso provavelmente será muito ineficiente em arquivos grandes.
A propósito, eu estou fazendo isso no OpenBSD, mas o OS X awk deve funcionar da mesma maneira.
fonte
v
eRS
. ieawk -v RS='' '/112.*223/ { print "found it"; exit }' file.in
"pcregrep" pode se referir a um estábulo mais antigo
pcregrep
e mais recentepcre2grep
. Ambos são fornecidos pelo projeto PCRE empcre.org
.As portas Mac fornecem a primeira como parte da porta
pcre
(estável na versão 8.40) e a segunda como parte da portapcre2
(atualmente versão 10.22). Instalar via:fonte