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 a partir do final do arquivo em vez do início e parar quando encontrar a primeira correspondência?
Você poderia tentar
ou
ou
Estou sempre usando cat (mas isso torna um pouco mais longo):
cat file | grep pattern | tail -1
Eu culparia meu professor do curso de administração do Linux na faculdade que ama gatos :))))
-- Você não precisa cat um arquivo antes de grep-lo.
grep pattern file | tail -1
e é mais eficiente, também.Para alguém que trabalha com arquivos de texto enormes em Unix/Linux/Mac/Cygwin. Se você usa o Windows, confira as ferramentas do 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 ter um bom desempenho:
zq
do pacote.Citação de seu readme do github:
Criando um índice
Consultando o índice
As soluções acima funcionam apenas para um único arquivo, para imprimir a última ocorrência de muitos arquivos (digamos com sufixo
.txt
), use o seguinte script bashonde
'pattern'
está o que você gostaria de grep.Se você tiver vários arquivos, use inline-for:
O /dev/null fornece um segundo arquivo para que o grep liste o nome do arquivo onde o padrão é encontrado.