command line ultimas Qual o oposto da cabeça? Eu quero tudo, mas as primeiras N linhas de um arquivo




vi editor tail command (7)

tail -n +linecount filename iniciará a saída na linha linecount do filename do filename , então tail -n +3 filename deverá fazer o que você deseja.

Dado um arquivo de texto de comprimento desconhecido, como posso ler, por exemplo, todas, exceto as duas primeiras linhas do arquivo? Eu sei que o tail vai me dar as últimas N linhas, mas eu não sei o que o 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 só

CCCC

tail --help dá o seguinte:

  -n, --lines=K            output the last K lines, instead of the last 10;
                           or use -n +K to output lines starting with the Kth

Então, para filtrar as 2 primeiras linhas, -n +3 deve fornecer a saída que você está procurando (começar do terceiro).


Assumindo que sua versão do tail suporte, você pode especificar o início da cauda após as linhas X. No seu caso, você faria 2 + 1.

tail -n +3

[[email protected] ~]$ tail -n +3 stack_overflow.txt
CCCC
DDDD
EEEE

Eu realmente não sei como fazê-lo apenas de ponta ou cabeça, mas com a ajuda de wc -l (contagem de linha) e expressão bash, você pode conseguir isso.

tail -$(( $( wc -l $FILE | grep -Eo '[0-9]+' ) - 2 )) $FILE

Espero que isto ajude.


Use isso, supondo que a primeira amostra seja chamada de sample1.dat e depois tail --lines=3 sample1.dat que imprimiria todas as linhas da terceira linha até a última linha.

Para a segunda amostra, suponha que seja chamado de sample2.dat, seria tail --lines=-1 sample2.dat que imprimiria a última linha ...


Uma solução simples usando o awk:

awk 'NR > 2 { print }' file.name

Tente sed 1,2d . Substitua 2 conforme necessário.





unix-head