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
Eu 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?
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
Se você quiser apenas ver as linhas do 43 em diante, você pode usar
tail -n +43 dump.sql
O sinal +
é importante - sem ele, tail
imprimirá as <últimas> últimas 43 linhas. Alternativamente com 'sed'
sed 1,42d dump.sql
Se você quiser realmente apagar as primeiras 42 linhas do arquivo original, então você pode fazer o sed fazer a mudança no local com a opção -i
sed -i 1,42d dump.sql
tente isso,
tail -n +43 dump.sql > dump_new.sql
Você pode usar o Vim no modo Ex:
ex -sc '1d42|x' dump.sql
1
passar para a primeira linha
42
selecione 42 linhas
d
delete
x
salvar e fechar
Desculpe, não posso fornecer código real agora. No entanto, tente ver algo nos moldes 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 depois imprimir tudo a partir da 45ª linha do arquivo. / p>
Espero que isso ajude e boa sorte.
Tente isso,
head -n 42 dump.sql > tmp; cat dump.sql | grep -vxf tmp > dump.sql.new; rm tmp
ou
a=$(cat dump.sql| wc -l); tail -n "$((a-42))" dump.sql > dump.sql.new
Tags command-line