Qual é a melhor maneira de obter apenas a correspondência final de uma expressão regular em um arquivo usando grep?
Além disso, é possível começar o grepping do final do arquivo em vez do início e parar quando encontrar a primeira correspondência?
Você poderia tentar
grep pattern file | tail -1
ou
tac file | grep pattern | head -1
ou
tac file | grep -m1 pattern
tac file | grep -m 1 pattern
grep -n
) no arquivo real, acho quetac
praticamente tive que ser evitado, a menos que quisesse fazer uma subtraçãowc -l
. Caso contrário,tac
comgrep -m1
faz muito sentido.grep
deixará de funcionar após a primeira partida. sem-m 1
,grep
primeiro encontrará todos os padrões correspondentes no arquivo e depoishead
mostrará apenas o primeiro - muito menos eficiente. Dennis, considere postar isso em uma resposta separada!Para alguém que trabalha com grandes arquivos de texto em Unix / Linux / Mac / Cygwin. Se você usa o Windows, verifique isso sobre as ferramentas Linux no Windows: https://stackoverflow.com/questions/3519738/what-is-the-best-way-to-use-linux-utilities-under-windows .
Pode-se seguir este fluxo de trabalho para obter um bom desempenho:
zq
no pacote.Cite seu leia-me no github:
Criando um índice
Consultando o índice
fonte
Eu estou sempre usando o gato (mas isso o torna um pouco mais longo):
cat file | grep pattern | tail -1
Eu culparia meu professor de curso de administração linux na faculdade que ama gatos :))))
- Você não precisa criar um arquivo antes de cumprimentá-lo.
grep pattern file | tail -1
e é mais eficiente também.fonte
cat
o arquivo e canalizá-logrep
. Você podegrep
pesquisar o arquivo diretamente viagrep pattern file
(e depois usartail
para retornar o último resultado), como na resposta da Cakemox.