Bash
Fractionnement de fichiers
Recherche…
Introduction
Parfois, il est utile de diviser un fichier en plusieurs fichiers distincts. Si vous avez des fichiers volumineux, il peut être judicieux de les diviser en morceaux plus petits.
Diviser un fichier
L'exécution de la commande split sans aucune option divisera un fichier en 1 ou plusieurs fichiers séparés contenant chacun jusqu'à 1000 lignes.
split file
Cela créera des fichiers nommés xaa
, xab
, xac
, etc., contenant chacun jusqu'à 1000 lignes. Comme vous pouvez le voir, tous sont préfixés par la lettre x
par défaut. Si le fichier initial était inférieur à 1000 lignes, un seul de ces fichiers serait créé.
Pour modifier le préfixe, ajoutez le préfixe souhaité à la fin de la ligne de commande
split file customprefix
Maintenant, les fichiers nommés customprefixaa
, customprefixab
, customprefixac
etc. seront créés
Pour spécifier le nombre de lignes à générer par fichier, utilisez l'option -l
. Ce qui suit divisera un fichier en un maximum de 5000 lignes
split -l5000 file
OU
split --lines=5000 file
Vous pouvez également spécifier un nombre maximal d'octets au lieu de lignes. Cela se fait en utilisant les options -b
ou --bytes
. Par exemple, pour autoriser un maximum de 1 Mo
split --bytes=1MB file
Nous pouvons utiliser sed avec l'option w pour diviser un fichier en plusieurs fichiers. Les fichiers peuvent être divisés en spécifiant une adresse de ligne ou un motif.
Supposons que nous ayons ce fichier source que nous voudrions séparer:
cat -n sourcefile
1 sur le Ning Nang Nong
2 Où les vaches vont Bong!
3 et les singes disent tous BOO!
4 Il y a un Nong Nang Ning
5 Où vont les arbres Ping!
6 Et les théières jibber jabber joo.
7 sur le Nong Ning Nang
Commande pour diviser le fichier par numéro de ligne:
sed '1,3w f1
> 4,7w f2' sourcefile
Cela écrit line1 à line3 dans le fichier f1 et line4 à line7 dans le fichier f2, à partir du fichier source.
cat -n f1
1 sur le Ning Nang Nong
2 Où les vaches vont Bong!
3 et les singes disent tous BOO!
cat -n f2
1 Il y a un Nong Nang Ning
2 Où vont les arbres Ping!
3 Et les théières jibber jabber joo.
4 sur le Nong Ning Nang
Commande pour diviser le fichier par contexte / modèle:
sed '/Ning/w file1
> /Ping/w file2' sourcefile
Cela divise le fichier source en fichier1 et fichier2. file1 contient toutes les lignes correspondant à Ning, file2 contient les lignes correspondant à Ping.
cat file1
Sur le Ning Nang Nong
Il y a un Nong Nang Ning
Sur le Nong Ning Nang
cat file2
Où vont les arbres Ping!