Acho que o comando que melhor te ajudará é tac: link
Como afirma:
tac - concatena e imprime arquivos no sentido inverso
Então, você poderia canalizá-lo para grep e corresponder nnn número de linhas antes de parar, ou algo nesse sentido.
Eu tenho um arquivo de log 70G +, e gostaria que as entradas mais recentes (apache log acrescentam novos itens no final) que correspondem a um padrão. eu posso:
run grep | tail
ou
run tail | grep
A opção 1 durará uma eternidade. Opção 2 pode retornar nada, então eu vou ter que aumentar a contagem de cauda e continuar correndo até que eu consiga alguma coisa.
Se eu pudesse passar da última linha até a primeira, seria ideal. Mas eu não encontrei nenhuma opção na página man do grep.
Existe algum truque para fazer isso? ou no grep sozinho ou com qualquer outra combinação de ferramentas linux?
Acho que o comando que melhor te ajudará é tac: link
Como afirma:
tac - concatena e imprime arquivos no sentido inverso
Então, você poderia canalizá-lo para grep e corresponder nnn número de linhas antes de parar, ou algo nesse sentido.
Esse é um arquivo grande. Você deve girar esses registros com mais frequência.
Se tac
for muito lento, você poderá escolher uma linguagem de programação com o comando seek
(perl, por exemplo) e, em seguida:
Tags command-line bash grep linux