J'ai un fichier texte brut de grande taille (en nombre de lignes) que j'aimerais diviser en fichiers plus petits, également en nombre de lignes. Ainsi, si mon fichier contient environ 2 millions de lignes, j'aimerais le diviser en 10 fichiers contenant 200 000 lignes, ou 100 fichiers contenant 20 000 lignes (plus un fichier contenant le reste ; le fait qu'il soit divisible à parts égales n'a pas d'importance).
Je pourrais le faire assez facilement en Python, mais je me demande s'il existe un moyen ninja de le faire en utilisant Bash et les utilitaires Unix (par opposition à la mise en boucle manuelle et au comptage/partitionnement des lignes).
3 votes
Par curiosité, une fois qu'ils sont "divisés", comment fait-on pour les "combiner" ? Quelque chose comme "cat part2 >> part1" ? Ou existe-t-il un autre utilitaire ninja ? Cela vous dérangerait-il de mettre votre question à jour ?
14 votes
Pour le remettre ensemble,
cat part* > original
12 votes
Oui, "cat" est le diminutif de "concatenate". En général, apropos est utile pour trouver les commandes appropriées. Par exemple, voyez la sortie de : apropos split
0 votes
@pixelbeat C'est plutôt cool, merci.
3 votes
Par ailleurs, les utilisateurs d'OS X doivent s'assurer que leur fichier contient des sauts de ligne/indicateurs de fin de ligne (LF) de style LINUX ou UNIX plutôt que des indicateurs de fin de ligne (CR) de style MAC OS X. Les commandes split et csplit ne fonctionneront pas si vos sauts de ligne sont des retours de chariot au lieu de retours de ligne. TextWrangler de BareBones software peut vous aider à résoudre ce problème si vous êtes sous Mac OS. Vous pouvez choisir l'apparence de vos caractères de retour à la ligne lorsque vous enregistrez (ou enregistrez sous...) vos fichiers texte.
2 votes
Version binaire : unix.stackexchange.com/questions/1588/