Eu tenho um mini-sistema com número limitado apenas de binários ( bash
, cp
, cat
, sed
, ...). Não tenho tail
comando e estou pensando se poderia emular a funcionalidade da cauda comsed
cat foo.txt | tail -n 10
Sei que posso imprimir as linhas 1 a 10 com o sed cat foo.txt | sed -n '1,10p'
, mas como imprimir as últimas 10 linhas?
Respostas:
Você poderia fazer algo assim:
fonte
sed -e :a -e '$q;N;11,$D;ba' foo
para coincidir com a pergunta.sed -e '1,11p' -e :a -e '$q;N;11,$D;ba'
Mas eu ainda gostaria de entender a parte da cauda !!!mas se você não tiver tac, poderá usar apenas o sed desta maneira:
fonte
Está
expr
disponível com o seu sistema? Em seguida, você pode tentar avaliar o número da linha desejada depois de contar o número total de linhas no arquivo.Criei um arquivo chamado
tmp
contendo os números de 1 a 20 em cada linha.Claro, você pode usar
wc -l
, se disponível.O comando para calcular o número total de linhas no arquivo é obtido de sed one liners . No entanto, não verifiquei se ele também funciona com arquivos vazios.
PS Se
expr
não estiver disponível, você pode usar subtrair números no Bash, como mostrado abaixo:fonte