Unix cat a partir da linha

33

Qual é a melhor maneira de gerar um arquivo a partir de uma linha específica (grande número como 70000). Algo como:

cat --line=70000 <file>
    
por vonhogen 30.10.2009 / 09:21

5 respostas

54

Dê uma olhada na cauda, mais precisamente, é --lines = + N switch:

tail --lines=+100 <file>
    
por 30.10.2009 / 09:43
17

A maneira mais óbvia é tail . A sintaxe pode ser um pouco diferente dependendo do sistema operacional que você está usando:

tail -n +70000

Se você não conseguir que o tail funcione, poderá usar sed , mas poderá ser mais lento:

sed -pe '1,69999d'
    
por 30.10.2009 / 09:43
2

Se, em vez de um número de linha, você precisar começar a listar na linha que contém um determinado $phrase , tente o seguinte.

more -1000 +/"$phrase" yourfilename | sed '1,4d'

O -1000 listará continuamente o texto para até 1.000 linhas; você pode mudar isso conforme necessário. O comando sed cortará as primeiras 4 linhas de saída, que foram inseridas automaticamente por more , contendo uma linha em branco, a mensagem "... pulando" e as duas linhas que precedem a linha de partida pretendida. Eu acho que isso pode variar dependendo do seu sistema.

    
por 19.04.2012 / 00:14
2

Você pode usar o parâmetro NR com o comando awk :

cat <file> | awk '{if (NR>=7000) print}'
    
por 29.06.2017 / 08:33
-1

cauda +250

mais sobre o comando unix cat

    
por 18.11.2009 / 06:41