J'ai un fichier assez volumineux (150 millions de lignes de 10 caractères). J'ai besoin de le diviser en 150 fichiers de 2 millions de lignes, chaque ligne de sortie étant alternativement les 5 premiers caractères ou les 5 derniers caractères de la ligne source. Je pourrais le faire en Perl plutôt rapidement, mais je me demandais s'il y avait une solution facile en utilisant bash. Des idées?Fractionner un fichier et ses lignes sous Linux/bash
Répondre
Travail à domicile? :-)
Je pense qu'un simple tuyau avec sed (pour diviser chaque ligne en deux) et split (pour diviser les choses en plusieurs fichiers) serait suffisant.
La commande man est votre ami.
ajouté après confirmation qu'il n'y a pas de devoirs:
Que diriez-vous
sed 's/\(.....\)\(.....\)/\1\n\2/' input_file | split -l 2000000 - out-prefix-
?
Ne pas faire ses devoirs, juste tester le site. Merci pour votre réponse. – Sklivvz
Super! À la fin, j'ai utilisé ceci: pour le fichier au format * .txt; fais le fichier $ echo; sed 's/\ (..... \) \ (..... \)/\ 1 \ r \ n \ 2 /' $ fichier | split -l 2000000 - $ fichier.part .; terminé – Sklivvz
Je pense que quelque chose comme cela pourrait fonctionner:
out_file=1
out_pairs=0
cat $in_file | while read line; do
if [ $out_pairs -gt 1000000 ]; then
out_file=$(($out_file + 1))
out_pairs=0
fi
echo "${line%?????}" >> out${out_file}
echo "${line#?????}" >> out${out_file}
out_pairs=$(($out_pairs + 1))
done
Je ne sais pas s'il est plus simple ou plus efficace que l'utilisation de Perl, cependant.
cinq premiers caractères de chaque variante de ligne, en supposant que le gros fichier appelé x.txt, et à supposer que c'est OK pour créer des fichiers dans le répertoire courant avec des noms x.txt *:.
séparés -l 2.000.000 x .txt x.txt.out & & (pour splitfile dans x.txt.out *; out out = "$ {splitfile} .firstfive"; echo "$ splitfile -> $ outfile"; couper -c 1-5 "$ splitfile ">" $ outfile "; done)
- 1. Fractionner un gros fichier XML en Python
- 2. Fractionner un fichier Excel à l'aide de VB
- 3. MFC - Copier un répertoire, ses sous-dossiers et fichiers
- 4. Comment ouvrir un fichier en C# et modifier ses propriétés?
- 5. Comment créer dynamiquement des colonnes dans un datagridview et lui attribuer des titres et ses lignes?
- 6. Fractionner le fichier wmv/wav dans l'application WinForms
- 7. Lots/Rechercher et modifier des lignes dans un fichier TXT
- 8. Comment obtenir le compte de tous les produits d'une catégorie et de ses sous-catégories (et sous-sous-catégories)?
- 9. Récupère le chemin et le nom de fichier de tous les fichiers d'un répertoire donné et de ses sous-répertoires
- 10. OpenID et ses défauts
- 11. Fractionner une chaîne dans ActionScript?
- 12. Rechargement un fichier de configuration sous jBoss
- 13. Texte de zone de texte à fractionner avec les conditions
- 14. Classe d'amis et tous ses descendants
- 15. Comment attacher plus d'un contrôleur pour afficher ses sous-vues
- 16. Compile Construire et fichier c sous Windows
- 17. Comment faire un DataGridView qui n'aligne pas ses lignes au sommet du contrôle?
- 18. Comment enregistrer une table (avec ses lignes, colonnes et cellules) dans un seul champ dans une base de données SQL
- 19. Emacs Lisp: Comment ajouter un dossier et tous ses premiers sous-dossiers de niveau à la charge chemin
- 20. Fractionner le code en plusieurs fichiers pour faciliter la gestion
- 21. Récupère des lignes de plusieurs tables avec un sous-select?
- 22. Fermeture de fichiers dans Vim à partir du répertoire et de ses sous-répertoires
- 23. Fractionner une chaîne en ASP Javascript
- 24. Supprimer des lignes du fichier
- 25. Java: Comment créer une collection d'un type parent spécifique et non ses sous-types?
- 26. Comment obtenir toutes les propriétés d'un objet et ses sous-objets
- 27. En détail: mklink et ses options
- 28. Microsoft.SqlServer.Management.Smo et ses frères travaille sur SQL2000?
- 29. extraction de sous-requête - Toutes les lignes
- 30. Comment déverrouiller un dossier/fichier sous Linux
Je pense que vous devez être un peu plus clair sur ce que la transformation est exactement. (C'est, je ne comprends pas.) Peut-être un petit exemple? – mweerden