Ir para a linha de arquivo onde o número de linhas menos “n” [duplicado]

0

Digamos que eu queira ir para a 80ª última linha do meu arquivo celery.log , mas não sei quantas linhas ele possui.

O equivalente do comando tail , mas vai para a linha 80 a partir do final, em vez do padrão.

Como eu faria isso?

    
por Zorgan 08.05.2018 / 09:20

3 respostas

3

echo '$-79p' | ed -s celery.log

Isso executaria o ed script $-79p no arquivo chamado celery.log , que exibiria a linha com 79 linhas acima da última linha do arquivo.

Em um shell que entende strings aqui:

ed -s celery.log <<<'$-79p'

Se o arquivo tiver menos de 80 linhas, ed retornará um erro (o caractere ? em seu fluxo de erro padrão) e não produzirá nenhuma saída no fluxo de saída padrão.

    
por 08.05.2018 / 09:42
2
tail -n 80 celery.log | head -n 1

Isto mostrará a primeira das últimas 80 linhas (se o arquivo tiver menos de 80 linhas, mostrará a primeira linha do arquivo).

    
por 08.05.2018 / 09:35
1

Você pode fazer isso:

tac celery.log | sed -n '80p'
    
por 08.05.2018 / 09:38