Reverse grep para obter as duas últimas ocorrências em um arquivo

9

Digamos que eu queira pegar as últimas 5 menções do cron ao /var/log/syslog.logexaminar o manual grep, parece que não consigo fazer com que o grep pesquise ao contrário. No entanto, posso pegar as ocorrências mais recentes.

grep cron -m 5 /var/log/syslog

Existe um comando grep reverso que eu possa usar? :)

Kit Sunde
fonte

Respostas:

14

Seguindo a filosofia usual do unix de combinar ferramentas: use greppara pesquisar e tailretornar a última parte do arquivo.

grep cron /var/log/syslog | tail -n 5
Gilles 'SO- parar de ser mau'
fonte
Seria mais rápido reverter a ordem se você souber que o conteúdo em que você está interessado está dentro das últimas X linhas. tail -n 100 </ var / log / syslog | grep cron
bk0
Observe que, na verdade, isso não reverte a ordem, apenas limita o grep às linhas X inferiores. Pode ou não servir ao propósito.
precisa saber é o seguinte
16

E quanto à tubulação tac?

http://linux.about.com/library/cmd/blcmdl1_tac.htm

tac  /var/log/syslog | grep cron -m 5
neurino
fonte
Você precisa de um segundo tac no final, para reconstruir a ordem original, não tac /var/log/syslog | grep cron -m 5 | tac? Tacatac ... :)
usuário desconhecido
Mas a ordem inversa não faz parte da solicitação? Taaaac ^^
neurino
Ah, talvez! Entendi a parte reversa apenas como procurando as últimas.
usuário desconhecido