Preciso remover as primeiras 42 linhas de um dump SQL de 2 GB.
Eu sei que posso ver as primeiras linhas usando:
head -n 44 dump.sql
Mas existe alguma maneira de editá-los ou removê-los?
Preciso remover as primeiras 42 linhas de um dump SQL de 2 GB.
Eu sei que posso ver as primeiras linhas usando:
head -n 44 dump.sql
Mas existe alguma maneira de editá-los ou removê-los?
Respostas:
Se você quiser apenas ver as linhas do 43º, você pode usar
tail -n +43 dump.sql
O +sinal é importante - sem ele, tailas últimas 43 linhas serão impressas . Alternativamente com 'sed'
sed 1,42d dump.sql
Se você realmente deseja excluir as primeiras 42 linhas do arquivo original, faça com que o sed faça a alteração no local com a -iopção
sed -i 1,42d dump.sql
sed -i 1,50000000d 17GigFilecria um arquivo temporário sedXYZque consome muito mais gigabytes. Existe uma abordagem sem arquivos temporários?
tail -n +43e head -n 44como mencionado na pergunta?
Este parece ser o mais fácil:
sed '1,42d' test.sql > test2.sql
Remova as linhas 1-42 do test.sql e salve como test2.sql
Você pode usar o Vim no modo Ex:
ex -s -c '1d42|x' dump.sql
1 mover para a primeira linha
42 selecione 42 linhas
d excluir
x salvar e fechar
Desculpe, não posso fornecer o código real no momento. No entanto, tente olhar algo ao longo das linhas de
tail -n arcv(`wc -l`) -44
O que isto deve fazer (uma vez formatado corretamente) é contar o número de linhas no arquivo (wc -l), subtrair 44 dele (-44) e imprimir tudo o que começa com a 45ª linha do arquivo.
Espero que isso ajude e boa sorte.
wc -lsobre o arquivo, você processá-lo duas vezes, enquanto sedou tailprocessá-lo apenas uma vez.
Por causa de seddiscrepâncias no Linux e Mac, resolvi usar o tail -n +43 dump.sql > dump.sqlformato.
tail. Encontrei muitas vezes algo novo para aprender com suas respostas. obrigado.