Page d'accueil » comment » Fractionner un fichier texte en deux (ou en un pourcentage quelconque) sous Ubuntu Linux

    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 -l

    total 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.