Dado um arquivo de texto de tamanho desconhecido, como posso ler, por exemplo, exceto as 2 primeiras linhas do arquivo? Eu sei que tail
vai me dar as últimas N linhas, mas não sei o que N está adiantado.
Então, para um arquivo
AAAA
BBBB
CCCC
DDDD
EEEE
eu quero
CCCC
DDDD
EEEE
E para um arquivo
AAAA
BBBB
CCCC
Eu ficaria
CCCC
command-line
scripting
tail
unix-head
Nicholas MT Elliott
fonte
fonte
head
para isso?Supondo que sua versão do tail o suporte, você pode especificar o início do tail após X linhas. No seu caso, você faria 2 + 1.
fonte
Uma solução simples usando o awk:
fonte
{ print }
é a ação padrão e pode ser omitida.Tente
sed 1,2d
. Substitua 2 conforme necessário.fonte
tail -n +linecount filename
iniciará a saída na linhalinecount
defilename
, portantotail -n +3 filename
, faça o que quiser.fonte
tail -n +17 filename
. Eu uso o LTS do bash / ubuntutail
aceitaram a sintaxe que usei na minha resposta original, mas agora é preciso usar a-n
opção explícita . Atualizei minha resposta de acordo.Use isso, supondo que a primeira amostra seja chamada sample1.dat e, em seguida
tail --lines=3 sample1.dat
, imprima todas as linhas da terceira linha até a última linha.Para a segunda amostra, suponha novamente que é chamado sample2.dat, o
tail --lines=-1 sample2.dat
que imprimiria a última linha ...fonte
tail +3 anyfile
fornece os resultados desejados para o caso geral, enquantotail --lines=N
requer o conhecimento prévio de N para fornecer o resultado desejado.tail
... não deveria ser "parte de baixo"? (! Ba-dum Tish Obrigado, eu serei aqui toda a semana ...)Realmente não sei como fazê-lo apenas com cauda ou cabeça, mas com a ajuda de
wc -l
(contagem de linhas) e expressão do bash, você pode conseguir isso.Espero que isto ajude.
fonte
usando o awk para obter todos, exceto as duas últimas linhas
awk para obter todas, exceto as 2 primeiras linhas
OU você pode usar mais
ou apenas bater
fonte