Como excluir linhas no arquivo da posição específica até o final do arquivo

2

Eu tenho um arquivo com muitas linhas.

Eu quero excluir da linha 1458 para o final do arquivo. Acho que posso fazer isso com sed , mas não sei como.

    
por alloppp 06.07.2016 / 01:28

3 respostas

9
sed '1458,$d'

Você pode usar isso com -i para editar o arquivo, se necessário.

por exemplo

sed -i '1458,$d' filename.txt
    
por 06.07.2016 / 01:36
4

Existem muitas possibilidades para isso, mas se o arquivo for muito grande, é melhor parar o processamento de qualquer linha após determinada posição e simplesmente sair. É exatamente para isso que o comando q foi criado em sed :

sed 1458q file
    
por 06.07.2016 / 01:53
2
$ head -n 1458 myfile > myfile.tmp ; mv myfile.tmp myfile

Nota: No meu conhecimento, não há uma maneira clara de encurtar um arquivo (no bash / shell etc) com base no número de linhas, isso não envolve a criação de um novo arquivo primeiro (que é o sed, ou sed - i (n place) faz.) Isso é importante se o espaço em disco restante for insuficiente para acomodar o arquivo recém-gravado. Nesse caso, se você puder adivinhar aproximadamente quanto ao tamanho do novo arquivo, truncar -s {número de bytes} myfile faz cortar o final do arquivo, sem criar um novo. / p>     

por 06.07.2016 / 01:43