Quero dividir um arquivo de log de 400 mil linhas de um número de linha específico.
Para esta pergunta, vamos definir um número arbitrário de 300k.
Existe um comando linux que me permite fazer isso ( dentro do script )?
Eu sei que split
me permite dividir o arquivo em partes iguais por tamanho ou números de linha, mas não é isso que eu quero. Quero os primeiros 300k em um arquivo e os últimos 100k no segundo arquivo.
Qualquer ajuda seria apreciada. Obrigado!
Pensando bem, isso seria mais adequado para o site de superusuário ou serverfault.
linux
shell
split
filesplitting
desnormalizador
fonte
fonte
Respostas:
Além disso, pensando bem, a divisão funcionará no seu caso, uma vez que a primeira divisão é maior do que a segunda. A divisão coloca o saldo da entrada na última divisão, então
split -l 300000 file_name
produzirá
xaa
com 300k linhas exab
com 100k linhas, para uma entrada com 400k linhas.fonte
tail -n +L file_name > bottom_file
onde simplesmenteL=K+1
sem necessidade de executarwc
primeirosed -n '1,1000p' test.log > top_test.log ; sed '1,1000d' test.log > bottom_test.log
. IHMO, isso é mais simples e não exige o cálculo do número total de linhas. Além disso, ainda funciona se linhas forem acrescentadas entre a execução de cada comando.