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

Donné: Un grand texte-fichier de données (par exemple, le format CSV) avec un "spécial" de la première ligne (par exemple, les noms de champ).

Voulais: Un équivalent de la coreutils split -l de commande, mais avec la condition supplémentaire que la ligne d'en-tête du fichier d'origine, apparaissent au début de chacune des pièces ainsi produites.

Je devine que certains concoction de split et head fera l'affaire?

  • Il semble raisonnable que quelqu'un doit ajouter que, comme une fonctionnalité intégrée de split, n'est-ce pas?
  • Probablement le facteur le plus important, contre ce devenu un haut-c'est que vous, en général, de reconstruire un fichier divisé par faire cat a b c > reconstructed. Étrangères lignes dans le fichier, la reconstruction approche ne permet pas de reproduire le fichier d'origine.
  • C'est ce que la prochaine (pas) "unsplit --remove-header" utilitaire est fait pour! Mais sérieusement, split, si elle devait avoir un "répétez-d'en-tête" option, faut-il encore défaut à son comportement actuel. Vous ne utiliser l'en-tête des trucs si vous avez vraiment voulu.
  • Oui, je pense que --keep-first N serait sympa de faire une option pour split qui serait utile à la fois pour ligne et mode octet
  • Je pense que c'est une bonne idée, absolument très utile pour le fractionnement d'un fichier à des fins de distribution plutôt que de la reconstruction. C'est l'un de ceux "c'est simple, comment est-il pas encore là" dispose d'un utilitaire Unix, si vieux, que je suis sceptique quant aux "personnes à charge" n'ont pas refusé les propositions précédentes pour ce faire exactement la fonctionnalité pour une raison ou une autre.
  • Sans aucun doute.
  • Je pense que le raisonnement peut être tout simplement dû à la POSIX spec pour le split n'ayant pas cette option. Je peux seulement imaginer combien il est difficile d'ajouter des fonctionnalités aux normes de POSIX! opengroup.org/onlinepubs/009695399/utilities/split.html
  • J'ai mis à jour ma réponse avec une fonction cool que GNU split fournit.

InformationsquelleAutor Arkady | 2009-09-11