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 est-il possible de les modifier ou de les supprimer?
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 est-il possible de les modifier ou de les supprimer?
Réponses:
Si vous voulez seulement voir les lignes à partir de la 43e, vous pouvez utiliser
tail -n +43 dump.sql
Le +
signe est important - sans cela, tail
les 43 dernières lignes seront imprimées . Alternativement avec 'sed'
sed 1,42d dump.sql
Si vous voulez vraiment supprimer les 42 premières lignes du fichier original, vous pouvez faire la modification en place avec l' -i
option
sed -i 1,42d dump.sql
sed -i 1,50000000d 17GigFile
crée un fichier temporaire sedXYZ
qui consomme beaucoup plus de giga-octets. Existe-t-il une approche sans fichiers temporaires?
tail -n +43
et head -n 44
comme mentionné dans la question?
Cela semble être le plus facile:
sed '1,42d' test.sql > test2.sql
Supprimez les lignes 1 à 42 de test.sql et enregistrez sous test2.sql
Vous pouvez utiliser Vim en mode Ex:
ex -s -c '1d42|x' dump.sql
1
passer à la première ligne
42
sélectionnez 42 lignes
d
effacer
x
sauver et fermer
Désolé, je ne peux pas vous donner le code actuel pour le moment. Cependant, essayez de regarder quelque chose du genre
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), d’en retirer 44 (-44), puis d’imprimer le tout à partir de la 45e ligne du fichier.
J'espère que ça t'aide et bonne chance.
wc -l
le fichier, vous traitez deux fois, alors sed
ou le tail
traiter qu'une seule fois.
En raison des sed
divergences entre Linux et Mac, j'ai résolu d'utiliser le tail -n +43 dump.sql > dump.sql
format.
tail
. J'ai souvent trouvé quelque chose de nouveau à apprendre de vos réponses. Merci.