Supprimer les n premières lignes d'un grand fichier texte

46

Je dois supprimer les 42 premières lignes d’un dump SQL de 2 Go.

Je sais que je peux voir les premières lignes en utilisant:

head -n 44 dump.sql

Mais y a-t-il un moyen de les éditer ou de les supprimer?

    
posée Kohjah Breese 24.01.2014 - 18:44
la source

7 réponses

11

Cela semble être le plus facile:

sed '1,42d' test.sql > test2.sql

Supprimez les lignes 1-42 de test.sql et enregistrez-les sous test2.sql

    
réponse donnée Kohjah Breese 24.01.2014 - 18:57
la source
63

Si vous voulez juste voir les lignes du 43ème, vous pouvez utiliser

tail -n +43 dump.sql

Le signe + est important - sans lui, tail imprimera à la place les last 43 lignes. Alternativement avec 'sed'

sed 1,42d dump.sql

Si vous voulez vraiment supprimer les 42 premières lignes du fichier original, vous pouvez faire en sorte que sed fasse le changement en place avec l'option -i

sed -i 1,42d dump.sql
    
réponse donnée steeldriver 24.01.2014 - 18:58
la source
9

essayez ceci,

tail -n +43 dump.sql > dump_new.sql

    
réponse donnée ptantiku 24.01.2014 - 18:59
la source
3

Vous pouvez utiliser Vim en mode Ex:

ex -sc '1d42|x' dump.sql
  1. 1 passe à la première ligne

  2. 42 select 42 lignes

  3. d delete

  4. x enregistrer et fermer

réponse donnée Steven Penny 16.04.2016 - 23:16
la source
0

Désolé, je ne peux pas vous donner le code actuel pour le moment. Cependant, essayez de regarder quelque chose comme

tail -n arcv('wc -l') -44

Ce que cela devrait faire (une fois correctement formaté) est de compter le nombre de lignes dans le fichier (wc -l), de soustraire 44 de celle-ci (-44), puis d'imprimer tout en commençant par la 45ème ligne du fichier. / p>

J'espère que ça aide et bonne chance.

    
réponse donnée kb2bcg 24.01.2014 - 18:54
la source
0

Essayez ceci,

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
    
réponse donnée souravc 24.01.2014 - 18:54
la source
0

Juste pour ajouter ceci. Si vous êtes sur un Mac, vous devez ajouter l'extension de sauvegarde. Réponse à partir de cet message .

sed -i '.bak' 1,42d dump.sql
    
réponse donnée Jerinaw 18.07.2018 - 17:04
la source

Lire d'autres questions sur les étiquettes