88 votes

Comment diviser un fichier et garder la première ligne dans chacune des pièces?

Donné: Un gros fichier de données texte (par exemple.CSV format) avec une première ligne « spéciale » (par exemple, les noms de champs).

Recherché: Équivalent de la commande coreutils `` , mais avec l’exigence supplémentaire que la ligne d’en-tête du fichier d’origine apparaisse au début de chacun des éléments résultants.

Je devine une concoction de et fera l’affaire?

26voto

Tim Richardson Points 307

Ce one-liner divisera le gros csv en morceaux de 999 enregistrements, en préservant la ligne d’en-tête en haut de chacun (donc 999 enregistrements + 1 en-tête = 1000 lignes)

Basé sur la réponse d’Ole Tange. (réponse d’Ole : Vous ne pouvez pas utiliser le nombre de lignes avec pipepart)

Voir les commentaires pour quelques conseils sur l’installation en parallèle

15voto

pixelbeat Points 12073

Vous pouvez utiliser la nouvelle fonctionnalité --filter dans GNU coreutils split >= 8.13 (2011) :

14voto

marco Points 1678

Vous pouvez utiliser [mg]awk:

100 est le nombre de lignes de chaque tranche. Il ne nécessite pas de fichiers temporaires et peut être placé sur une seule ligne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X