GNU/Linux >> Tutoriels Linux >  >> Linux

15 Exemples de commandes Linux Split and Join pour gérer des fichiers volumineux

Les commandes Linux split et join sont très utiles lorsque vous manipulez des fichiers volumineux. Cet article explique comment utiliser la commande Linux split and join avec des exemples descriptifs.

Syntaxe des commandes de jointure et de fractionnement :

join [OPTION]… FILE1 FILE2
split [OPTION]… [INPUT [PREFIX]]

Exemples de commandes fractionnées Linux

1. Exemple de fractionnement de base

Voici un exemple de base de la commande split.

$ split split.zip 

$ ls
split.zip  xab  xad  xaf  xah  xaj  xal  xan  xap  xar  xat  xav  xax  xaz  xbb  xbd  xbf  xbh  xbj  xbl  xbn
xaa        xac  xae  xag  xai  xak  xam  xao  xaq  xas  xau  xaw  xay  xba  xbc  xbe  xbg  xbi  xbk  xbm  xbo

Nous voyons donc que le fichier split.zip a été divisé en fichiers plus petits avec x** comme noms de fichiers. Où ** est le suffixe à deux caractères ajouté par défaut. De plus, par défaut, chaque fichier x** contiendrait 1000 lignes.

$ wc -l *
   40947 split.zip
    1000 xaa
    1000 xab
    1000 xac
    1000 xad
    1000 xae
    1000 xaf
    1000 xag
    1000 xah
    1000 xai
...
...
...

Ainsi, la sortie ci-dessus confirme que, par défaut, chaque fichier x** contient 1 000 lignes.

2. Modifiez la longueur du suffixe à l'aide de l'option -a

Comme indiqué dans l'exemple 1 ci-dessus, la longueur du suffixe par défaut est 2. Mais cela peut être modifié en utilisant l'option -a.

Comme vous le voyez dans l'exemple suivant, il utilise le suffixe de longueur 5 sur les fichiers fractionnés.

$ split -a5 split.zip
$ ls
split.zip  xaaaac  xaaaaf  xaaaai  xaaaal  xaaaao  xaaaar  xaaaau  xaaaax  xaaaba  xaaabd  xaaabg  xaaabj  xaaabm
xaaaaa     xaaaad  xaaaag  xaaaaj  xaaaam  xaaaap  xaaaas  xaaaav  xaaaay  xaaabb  xaaabe  xaaabh  xaaabk  xaaabn
xaaaab     xaaaae  xaaaah  xaaaak  xaaaan  xaaaaq  xaaaat  xaaaaw  xaaaaz  xaaabc  xaaabf  xaaabi  xaaabl  xaaabo

Remarque :Plus tôt, nous avons également discuté d'autres utilitaires de manipulation de fichiers - tac, rev, paste.

3. Personnalisez la taille du fichier fractionné à l'aide de l'option -b

La taille de chaque fichier divisé en sortie peut être contrôlée à l'aide de l'option -b.

Dans cet exemple, les fichiers fractionnés ont été créés avec une taille de 200 000 octets.

$ split -b200000 split.zip 

$ ls -lart
total 21084
drwxrwxr-x 3 himanshu himanshu     4096 Sep 26 21:20 ..
-rw-rw-r-- 1 himanshu himanshu 10767315 Sep 26 21:21 split.zip
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xad
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xac
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xab
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xaa
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xah
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xag
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xaf
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xae
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xar
...
...
...

4. Créez des fichiers fractionnés avec un suffixe numérique à l'aide de l'option -d

Comme on le voit dans les exemples ci-dessus, la sortie a le format x** où ** sont des alphabets. Vous pouvez le changer en nombre en utilisant l'option -d.

Voici un exemple. Ceci a un suffixe numérique sur les fichiers fractionnés.

$ split -d split.zip
$ ls
split.zip  x01  x03  x05  x07  x09  x11  x13  x15  x17  x19  x21  x23  x25  x27  x29  x31  x33  x35  x37  x39
x00        x02  x04  x06  x08  x10  x12  x14  x16  x18  x20  x22  x24  x26  x28  x30  x32  x34  x36  x38  x40

5. Personnalisez le nombre de fragments fractionnés à l'aide de l'option -C

Pour contrôler le nombre de morceaux, utilisez l'option -C.

Cet exemple créera 50 morceaux de fichiers fractionnés.

$ split -n50 split.zip
$ ls
split.zip  xac  xaf  xai  xal  xao  xar  xau  xax  xba  xbd  xbg  xbj  xbm  xbp  xbs  xbv
xaa        xad  xag  xaj  xam  xap  xas  xav  xay  xbb  xbe  xbh  xbk  xbn  xbq  xbt  xbw
xab        xae  xah  xak  xan  xaq  xat  xaw  xaz  xbc  xbf  xbi  xbl  xbo  xbr  xbu  xbx

6. Évitez les morceaux de taille nulle en utilisant l'option -e

Tout en divisant un fichier relativement petit en un grand nombre de morceaux, il est bon d'éviter les morceaux de taille nulle car ils n'ajoutent aucune valeur. Cela peut être fait en utilisant l'option -e.

Voici un exemple :

$ split -n50 testfile

$ ls -lart x*
-rw-rw-r-- 1 himanshu himanshu 0 Sep 26 21:55 xag
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:55 xaf
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:55 xae
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:55 xad
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:55 xac
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:55 xab
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:55 xaa
-rw-rw-r-- 1 himanshu himanshu 0 Sep 26 21:55 xbx
-rw-rw-r-- 1 himanshu himanshu 0 Sep 26 21:55 xbw
-rw-rw-r-- 1 himanshu himanshu 0 Sep 26 21:55 xbv
...
...
...

Nous voyons donc que de nombreux morceaux de taille nulle ont été produits dans la sortie ci-dessus. Maintenant, utilisons l'option -e et voyons les résultats :

$ split -n50 -e testfile
$ ls
split.zip  testfile  xaa  xab  xac  xad  xae  xaf

$ ls -lart x*
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:57 xaf
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:57 xae
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:57 xad
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:57 xac
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:57 xab
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:57 xaa

Nous voyons donc qu'aucun morceau de taille nulle n'a été produit dans la sortie ci-dessus.

7. Personnalisez le nombre de lignes à l'aide de l'option -l

Le nombre de lignes par fichier divisé en sortie peut être personnalisé à l'aide de l'option -l.

Comme on le voit dans l'exemple ci-dessous, les fichiers fractionnés sont créés avec 20 000 lignes.

$ split -l20000 split.zip

$ ls
split.zip  testfile  xaa  xab  xac

$ wc -l x*
   20000 xaa
   20000 xab
     947 xac
   40947 total

Obtenir des informations détaillées à l'aide de l'option –verbose

Pour obtenir un message de diagnostic chaque fois qu'un nouveau fichier fractionné est ouvert, utilisez l'option –verbose comme indiqué ci-dessous.

$ split -l20000 --verbose split.zip
creating file `xaa'
creating file `xab'
creating file `xac'

Exemples de commandes de jointure Linux

8. Exemple de jointure de base

La commande Join fonctionne sur le premier champ des deux fichiers (fournis en entrée) en faisant correspondre les premiers champs.

Voici un exemple :

$ cat testfile1
1 India
2 US
3 Ireland
4 UK
5 Canada

$ cat testfile2
1 NewDelhi
2 Washington
3 Dublin
4 London
5 Toronto

$ join testfile1 testfile2
1 India NewDelhi
2 US Washington
3 Ireland Dublin
4 UK London
5 Canada Toronto

On voit donc qu'un fichier contenant des pays a été joint à un autre fichier contenant des capitales sur la base du premier champ.

9. Joindre des travaux sur la liste triée

Si l'un des deux fichiers fournis pour joindre la commande n'est pas trié, un avertissement s'affiche dans la sortie et cette entrée particulière n'est pas jointe.

Dans cet exemple, puisque le fichier d'entrée n'est pas trié, il affichera un message d'avertissement/d'erreur.

$ cat testfile1
1 India
2 US
3 Ireland
5 Canada
4 UK

$ cat testfile2
1 NewDelhi
2 Washington
3 Dublin
4 London
5 Toronto

$ join testfile1 testfile2
1 India NewDelhi
2 US Washington
3 Ireland Dublin
join: testfile1:5: is not sorted: 4 UK
5 Canada Toronto

10. Ignorer la casse en utilisant l'option -i

Lors de la comparaison de champs, la différence de casse peut être ignorée en utilisant l'option -i comme indiqué ci-dessous.

$ cat testfile1
a India
b US
c Ireland
d UK
e Canada

$ cat testfile2
a NewDelhi
B Washington
c Dublin
d London
e Toronto

$ join testfile1 testfile2
a India NewDelhi
c Ireland Dublin
d UK London
e Canada Toronto

$ join -i testfile1 testfile2
a India NewDelhi
b US Washington
c Ireland Dublin
d UK London
e Canada Toronto

11. Vérifiez que l'entrée est triée à l'aide de l'option –check-order

Voici un exemple. Étant donné que testfile1 n'a pas été trié vers la fin, une erreur s'est produite dans la sortie.

$ cat testfile1
a India
b US
c Ireland
d UK
f Australia
e Canada

$ cat testfile2
a NewDelhi
b Washington
c Dublin
d London
e Toronto

$ join --check-order testfile1 testfile2
a India NewDelhi
b US Washington
c Ireland Dublin
d UK London
join: testfile1:6: is not sorted: e Canada

12. Ne vérifiez pas le tri à l'aide de l'option –nocheck-order

C'est le contraire de l'exemple précédent. Aucune vérification du tri n'est effectuée dans cet exemple, et il n'affichera aucun message d'erreur.

$ join --nocheck-order testfile1 testfile2
a India NewDelhi
b US Washington
c Ireland Dublin
d UK London

13. Imprimer les lignes non appairables à l'aide de l'option -a

Si les deux fichiers d'entrée ne peuvent pas être mappés un à un, alors via l'option -a[FILENUM] nous pouvons avoir ces lignes qui ne peuvent pas être appariées lors de la comparaison. FILENUM est le numéro de fichier (1 ou 2).

Dans l'exemple suivant, nous voyons que l'utilisation de -a1 a produit la dernière ligne dans testfile1 (marquée en gras ci-dessous) qui n'avait pas de paire dans testfile2.

$ cat testfile1
a India
b US
c Ireland
d UK
e Canada
f Australia

$ cat testfile2
a NewDelhi
b Washington
c Dublin
d London
e Toronto

$ join testfile1 testfile2
a India NewDelhi
b US Washington
c Ireland Dublin
d UK London
e Canada Toronto

$ join -a1 testfile1 testfile2
a India NewDelhi
b US Washington
c Ireland Dublin
d UK London
e Canada Toronto
f Australia

14. Imprimer uniquement les lignes non appariées à l'aide de l'option -v

Dans l'exemple ci-dessus, des lignes appariées et non appariées ont été produites dans la sortie. Mais, si seule une sortie non appariée est souhaitée, utilisez l'option -v comme indiqué ci-dessous.

$ join -v1 testfile1 testfile2
f Australia

15. Jointure basée sur différentes colonnes des deux fichiers à l'aide des options -1 et -2

Par défaut, les premières colonnes des deux fichiers sont utilisées pour comparer avant de se joindre. Vous pouvez modifier ce comportement en utilisant les options -1 et -2.

Dans l'exemple suivant, la première colonne de testfile1 a été comparée à la deuxième colonne de testfile2 pour produire la sortie de la commande join.

$ cat testfile1
a India
b US
c Ireland
d UK
e Canada

$ cat testfile2
NewDelhi a
Washington b
Dublin c
London d
Toronto e

$ join -1 1 -2 2 testfile1 testfile2
a India NewDelhi
b US Washington
c Ireland Dublin
d UK London
e Canada Toronto

Linux
  1. Commande Linux Cat :utilisation et exemples

  2. Commandes Linux - Présentation et exemples

  3. Exemples pratiques de la commande rsync sous Linux

  4. 10 exemples de commandes Linux DU (taille d'utilisation du disque de fichiers et de dossiers)

  5. Exemples de commandes mkdir et rmdir sous Linux

Commande lsof sous Linux (10 exemples)

Options de commande et exemples de commande Tee sous Linux

Commande Cat sous Linux :Exemples essentiels et avancés

Commande lsof sous Linux avec exemples

Commande split Linux avec exemples

Commande comm Linux avec exemples