Fractionner un fichier texte en deux (ou en un pourcentage quelconque) sous Ubuntu Linux
Si vous essayez de traiter un fichier texte difficile à manipuler, le fractionner en sections peut parfois aider à accélérer le traitement, en particulier si nous devions importer un fichier dans un tableur. Ou vous voudrez peut-être simplement récupérer un ensemble particulier de lignes d'un fichier.
Entrez split, wc, tail, cat et grep. (n'oubliez pas sed et awk). Linux contient un riche ensemble d’utilitaires permettant de travailler avec des fichiers texte sur la ligne de commande. Pour notre tâche aujourd'hui, nous utiliserons split et wc.
Nous examinons d’abord notre fichier journal… .
> ls -l
-rw-r-r- 1 thegeek ggroup 42046520 2006-09-19 11:42 access.log
Nous voyons que la taille du fichier est de 42Mo. C'est un peu gros… mais combien de lignes traitons-nous? Si nous voulions importer ceci dans Excel, il nous faudrait le garder moins de 65 000 lignes..
Vérifions le nombre de lignes du fichier à l'aide de l'utilitaire wc, qui signifie «nombre de mots»..
> wc -l access.log
146330 access.log
Nous dépassons largement notre limite. Nous devrons diviser cela en 3 segments. Nous allons utiliser l'utilitaire split pour le faire.
> split -l 60000 access.log
> ls -ltotal 79124
-rw-rw-r- 1 thegeek ggroup 40465200 2006-09-19 12:00 access.log
-rw-rw-r- 1 thegeek ggroup 16598163 2006-09-19 12:05 xaa
-rw-rw-r- 1 thegeek ggroup 16596545 2006-09-19 12:05 xab
-rw-rw-r- 1 thegeek ggroup 7270492 2006-09-19 12:05 xac
Nous avons maintenant divisé nos fichiers texte en 3 fichiers distincts, contenant chacun moins de 60000 lignes, ce qui semblait être un bon nombre à choisir. Le dernier fichier contient le montant restant. Si vous deviez couper ce fichier en deux, vous auriez fait ceci:
> split -l 73165 access.log
Et c'est tout ce qu'il y a à dire.