Preciso recuperar as últimas 100 linhas de logs do arquivo de log. Eu tentei o comando sed
sed -n -e '100,$p' logfilename
Informe-me como posso alterar este comando para recuperar especificamente as últimas 100 linhas.
Preciso recuperar as últimas 100 linhas de logs do arquivo de log. Eu tentei o comando sed
sed -n -e '100,$p' logfilename
Informe-me como posso alterar este comando para recuperar especificamente as últimas 100 linhas.
Respostas:
Você pode usar o comando tail da seguinte maneira:
tail -100 <log file> > newLogfile
Agora, as últimas 100 linhas estarão presentes em newLogfile
EDITAR:
Versões mais recentes da cauda, conforme mencionado pelo comando twalberg use:
tail -n 100 <log file> > newLogfile
tail
requerem a sintaxe tail -n 100 <filename>
...
Veja, o script sed que imprime as 100 últimas linhas que você pode encontrar na documentação do sed ( https://www.gnu.org/software/sed/manual/sed.html#tail ):
$ cat sed.cmd
1! {; H; g; }
1,100 !s/[^\n]*\n//
$p
$ sed -nf sed.cmd logfilename
Para mim, é muito mais difícil que o seu script,
tail -n 100 logfilename
é muito mais simples. E é bastante eficiente, não lerá todos os arquivos se não for necessário. Veja minha resposta com o relatório strace para tail ./huge-file
: /unix/102905/does-tail-read-the-whole-file/102910#102910
"tail" é um comando para exibir a última parte de um arquivo, usando as opções disponíveis adequadas nos ajuda a obter uma saída mais específica. a opção mais usada para mim é -n e -f
SINOPSE
cauda [-F | -f -r] [-q] [-b número | -c número | -n número] [arquivo ...]
Aqui
-n number: O local é um número de linhas.
-f: A opção -f faz com que a cauda não pare quando o final do arquivo for atingido, mas espere que dados adicionais sejam anexados à entrada. A opção -f será ignorada se a entrada padrão for um canal, mas não se for um FIFO.
Recuperar os últimos 100 registros de linhas
To get last static 100 lines
tail -n 100 <file path>
To get real time last 100 lines
tail -f -n 100 <file path>
Eu sei que isso é muito antigo, mas, para quem quer que seja, ajuda.
less +F my_log_file.log
isso é apenas básico, com menos você pode fazer coisas muito mais poderosas. Depois de começar a ver os logs, você pode pesquisar, acessar o número da linha, pesquisar padrões e muito mais, além de ser mais rápido para arquivos grandes.
é como vim para logs [totalmente minha opinião]
documentação original do less: https://linux.die.net/man/1/less
menos cheatsheet: https://gist.github.com/glnds/8862214
len=`cat filename | wc -l`
len=$(( $len + 1 ))
l=$(( $len - 99 ))
sed -n "${l},${len}p" filename
a primeira linha pega o comprimento (Total de linhas) do arquivo e depois +1 no total de linhas; depois disso, temos que buscar 100 registros, -99 do total, basta colocar as variáveis no comando sed para buscar as últimas 100 linhas do arquivo
Eu espero que isso te ajude.