logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
doc:systeme:commandes:les-commandes-join-paste-split-et-nl [07/06/2014 16:53]
Hypathie [La commande paste]
doc:systeme:commandes:les-commandes-join-paste-split-et-nl [06/08/2014 17:51]
Hypathie [sort]
Ligne 1: Ligne 1:
-====== ​Les commandes : d'​autres commandes pour la gestion des fichiers-texte ======+====== ​D'​autres commandes pour la gestion des fichiers-texte ======
  
   * Objet : Voici d'​autres commandes pour la gestion de fichiers texte   * Objet : Voici d'​autres commandes pour la gestion de fichiers texte
-  * Niveau requis : {{tag>​débutant }} +  * Niveau requis : {{tag>grand-débutant }}
-  * Commentaires : //Contexte d'​utilisation du sujet du tuto. // FIXME+
   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
-  * Suivi : {{tag>en-chantier}} +  * Suivi : {{tag>à-placer}} 
-    * Création par **Hypathie** 07/06/2014+    * Création par [[user>Hypathie]] 07/06/2014
     * Testé par <...> le <...> FIXME     * Testé par <...> le <...> FIXME
-  * Commentaires sur le forum : [[url | Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) FIXME+  * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​pid=92369#​p92369 ​| Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
  
-**Nota :**+**Nota : ​Voici des commandes très simples d'​utilisation. ​**
  
 Contributeurs,​ les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! Contributeurs,​ les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !
  
 ===== Introduction ===== ===== Introduction =====
-  *[[doc:​systeme:​commandes:​le_debianiste_qui_papillonne#​les-fichiers|Les autres commandes sur les fichiers]]\\ 
-  *[[doc:​systeme:​commandes:​creer#​trouver-un-fichier|Trouver un fichier]] 
-  *[[doc:​systeme:​expand|commande expand]] 
-  *[[doc:​systeme:​split|commande split]] 
  
 +Pour les commandes principales de gestion des fichiers : 
 +  * [[doc:​systeme:​commandes:​creer|Les commandes Linux de gestion des fichiers et répertoires]]
 +
 +Nous allons aborder quelques commandes complémentaires permettant de :
 +
 +  * améliorer l'​affichage : fmt ; nl
 +  * combiner le contenu de fichiers : join ; paste 
 +  * transformer le contenu de fichiers : sort ; split ; tr ; uniq ; expand et unexpand
 +
 +
 +
 +===== la commande fmt=====
 +===Syntaxe ===
 +
 +  fmt [options] [fichier...]
 +  ​
 +=== Préparation===
 +Création du fichier "​~/​Essai-text-processing/​essai-fmt"​
 +
 +<code user>
 +cat > ~/​Essai-text-processing/​essai-fmt <<EOF
 +> chez debian-facile c'est facile ... très facile ... très très facile ... très très très très très très facile ... 
 +facile et encore facile !
 +> EOF
 +</​code>​
 +
 +===Affichage du contenu d'un fichier en respectant les mots ===
 +
 +  * Affichage avec la commande ''​cat''​
 +<code user>
 +cat ~/​Essai-text-processing/​essai-fmt
 +</​code>​
 +<​code>​
 +chez debian-facile c'est facile ... très facile ... très très facile ... très tr
 +ès très très très très facile ... facile et encore facile !
 +</​code>​
 +
 +>​L'​affichage avec la commande ''​cat''​ peut être difficile à lire.
 +
 +  * Affichage avec la commande ''​fmt''​ :
 +<code user>
 +fmt ~/​Essai-text-processing/​essai-fmt
 +</​code>​
 +<​code>​
 +chez debian-facile c'est facile ... très facile ... très très facile
 +... très très très très très très facile ... facile et encore
 +facile !
 +</​code>​
 +<​note>​
 +  * Par défaut, la commande ''​fmt''​ affiche le contenu d'un fichier par ligne de 75 caractères maximum.
 +  * L'​option ''​-w''​ : pour indiquer le nombre de caractère par ligne
 +<code user>
 +fmt -w 20 ~/​Essai-text-processing/​essai-fmt
 +</​code>​
 +<​code>​
 +chez debian-facile
 +c'est facile
 +... très facile
 +... très très
 +facile ... très
 +très très très
 +très très facile
 +... facile et
 +encore facile !
 +</​code>​
 +</​note>​
 +
 +===Combiner fmt et less pour encore plus de lisibilité ===
 +<code user>
 +fmt -w 20 ~/​Essai-text-processing/​essai-fmt | less
 +</​code>​
 +<​code>​
 +chez debian-facile
 +c'est facile
 +... très facile
 +... très très
 +facile ... très
 +très très très
 +très très facile
 +... facile et
 +encore facile !
 +(END)
 +</​code>​
 +  * Voir [[doc:​editeurs:​less| la commande less]]
 +
 +=====La commande nl =====
 +Permet de numéroter l'​affichage d'un fichier.
 +
 +===Syntaxe ===
 +
 +  nl [options] [fichier...]
 +
 +===Préparation ===
 +  * copie du fichier ~/.bashrc et visualisation :
 +
 +<code user>
 +cat ~/.bashrc >> ~/​Essai-text-processing/​bashrc-bis
 +</​code>​
 +  * comparons avec l'​affichage de less
 +<code user>
 +less ~/​Essai-text-processing/​bashrc-bis
 +</​code>​
 +
 +<​code>​
 +# ~/.bashrc: executed by bash(1) for non-login shells.
 +# see /​usr/​share/​doc/​bash/​examples/​startup-files (in the package bash-doc)
 +# for examples
 +
 +# If not running interactively,​ don't do anything
 +case $- in
 +    *i*) ;;
 +      *) return;;
 +esac
 +</​code>​
 +>​Premières lignes du retour.
 + 
 +===Affichage numéroté ===
 +<​code>​
 +nl ~/​Essai-text-processing/​bashrc-bis
 +</code user>
 +
 +<​code>​
 +     1 # ~/.bashrc: executed by bash(1) for non-login shells.
 +     2 # see /​usr/​share/​doc/​bash/​examples/​startup-files (in the package bash-doc)
 +     3 # for examples
 +       
 +     4 # If not running interactively,​ don't do anything
 +     ​5 case $- in
 +     ​6  ​   *i*) ;;
 +     ​7  ​     *) return;;
 +     ​8 esac
 +
 +</​code>​
 +
 +>​Premières lignes du retour
 +
 +===Pour encore plus de lisibilité ===
 +
 +<code user>
 +fmt -w 65 ~/​Essai-text-processing/​bashrc-bis | nl ~/​Essai-text-processing/​bashrc-bis | less
 +</​code>​
 +<​code>​
 +     ​1 ​ # ~/.bashrc: executed by bash(1) for non-login shells.
 +     ​2 ​ # see /​usr/​share/​doc/​bash/​examples/​startup-files (in the package bash-doc)
 +     ​3 ​ # for examples
 +       
 +     ​4 ​ # If not running interactively,​ don't do anything
 +     ​5 ​ case $- in
 +     ​6 ​     *i*) ;;
 +     ​7 ​       *) return;;
 +     ​8 ​ esac
 +
 +</​code>​
 +
 +>​Premières lignes du retour
 +
 +<​note>​
 +Par défaut la commande nl numérote les lignes non-vides.
 +  * Quelques options :\\
 +    - -b : numérotation des lignes vides
 +    - -b -t[expression régulière] : affiche tout mais numérote les lignes qui correspondent à l'​expression régulière
 +    - -n ln : affichage avec numérotation tout à droit.
 +    - -n rn : affichage par défaut, c'​est-à-dire avec une tabulation à droite avec le chiffre de la numérotation.
 +    - -n rz : affichage de zéro entre le bord droit et le chiffre de numérotation ​
 +  * voir man nl pour plus de meilleures explications.
 +</​note>​
 =====La commande join ===== =====La commande join =====
 ===Syntaxe de la commande join === ===Syntaxe de la commande join ===
Ligne 31: Ligne 192:
 cat ~/​Essai-text-processing/​users cat ~/​Essai-text-processing/​users
 </​code>​ </​code>​
-retour : 
 <​code>​ <​code>​
 01 Toto 01 Toto
Ligne 42: Ligne 202:
 </​code>​ </​code>​
  
-Retour : 
 <​code>​ <​code>​
 toto@gmail.com 01 toto@gmail.com 01
Ligne 54: Ligne 213:
 join -1 1 -2 2 ~/​Essai-text-processing/​users ~/​Essai-text-processing/​infos-users join -1 1 -2 2 ~/​Essai-text-processing/​users ~/​Essai-text-processing/​infos-users
 </​code>​ </​code>​
-  * option -1 : donne le n° de colonne du champ commun, pour le premier document 
-  * 1 : premier fichier 
-  * option -2 : n° de colonne du champ commun, pour le deuxième document 
-  * 2 : deuxième fichier 
-  * -j option CHAMP : équivalent à « -1 CHAMP -2 CHAMP » 
-  * -i : ignorer ​ les  différences ​ de  casse  
-  * voir man join pour plus d'​option 
- 
-Retour : 
 <​code>​ <​code>​
 01 Toto toto@gmail.com 01 Toto toto@gmail.com
Ligne 68: Ligne 218:
 03 Lili lili@hotmail.com 03 Lili lili@hotmail.com
 </​code>​ </​code>​
 +  * Explications :
 +    * l'​option ''​-1''​ : donne le n° de colonne du champ commun, pour le premier document
 +    * 1 : premier fichier
 +    * l'​option ''​-2''​ : n° de colonne du champ commun, pour le deuxième document
 +    * 2 : deuxième fichier
 +  * D'​autres options utiles :
 +    * ''​-j''​ (option CHAMP) : équivalent à « -1 CHAMP -2 CHAMP »
 +    * ''​-i''​ : ignorer ​ les  différences ​ de  casse 
 +  * voir ''​man join''​ pour plus d'​options
 +
 <​note>​ <​note>​
-Pour fusionner des fichiers qui ont en commun ​":"+Pour fusionner des fichiers qui ont en commun ​''​:''​\\  
-join -t':'​ -2 1 -2 2 fichier1 fichier2+''​join -t':'​ -2 1 -2 2 fichier1 fichier2''​
 </​note>​ </​note>​
  
-=== concaténation ​de la fusion dans un fichier===+=== Concaténation ​de la fusion dans un fichier===
 <code user> <code user>
 join -1 1 -2 2 ~/​Essai-text-processing/​users ~/​Essai-text-processing/​infos-users > ~/​Essai-text-processing/​adr-users join -1 1 -2 2 ~/​Essai-text-processing/​users ~/​Essai-text-processing/​infos-users > ~/​Essai-text-processing/​adr-users
 </​code>​ </​code>​
-===vérification ​===+===Vérification ​===
 <code user> <code user>
 cat ~/​Essai-text-processing/​adr-users cat ~/​Essai-text-processing/​adr-users
Ligne 97: Ligne 257:
 <code user> <code user>
 cat ~/​Essai-text-processing/​users cat ~/​Essai-text-processing/​users
-# retour :+</​code>​ 
 +<​code>​
 01 Toto 01 Toto
 02 Titi 02 Titi
 03 Lili 03 Lili
 +</​code>​ 
 +<code user>
 cat ~/​Essai-text-processing/​infos-users cat ~/​Essai-text-processing/​infos-users
-#retour : +</​code>​ 
 +<​code> ​
 toto@gmail.com 01 toto@gmail.com 01
 titi@gmx.fr 02 titi@gmx.fr 02
Ligne 110: Ligne 273:
  
 ===Regroupement des lignes des deux fichiers === ===Regroupement des lignes des deux fichiers ===
-Retour: 
  
 <code user> <code user>
 paste ~/​Essai-text-processing/​users ~/​Essai-text-processing/​infos-users paste ~/​Essai-text-processing/​users ~/​Essai-text-processing/​infos-users
 </​code>​ </​code>​
- 
-Retour : 
  
 <​code>​ <​code>​
Ligne 137: Ligne 297:
  
 ===== sort ===== ===== sort =====
 +===Syntaxe===
  
-=====La commande ​nl =====+  sort [options [+POS1] [-POS2]] [fichier...] 
 + 
 +<note tip> 
 +__La commande sort permet__ : 
 + 
 +  * d'​afficher le contenu de fichiers ; 
 +  * de trier les lignes d'un fichier texte, en fonction des colonnes. 
 +__ 
 +Les options utiles__: 
 + 
 +  * **''​-o''​** : inscrire la sortie dans un fichier 
 +  * **''​-t''​** : pour spécifier le séparateur (par défaut ce sont les espaces ou les tabulations qui délimitent les colonnes) 
 +  * **''​-k''​** : pour spécifier la colonne (à la place de +POS1 -POS2) 
 +  * **''​-n''​** : pour spécifier qu'il s'agit d'un tri numérique 
 +  * **''​-d''​** : pour tri dictionnaire 
 +  * **''​-r''​** : pour un tri inverse (-rn [inverse de numérique] ou -rd [inverse d'​alphabétique]) 
 +  * **''​-M''​** : ordre chronologique 
 +  * **''​-h''​** : comparer des nombres dans un format lisible par un  humain (par exemple, 2K 1G) 
 +  * **''​-f''​** : (ignore-case) convertir les minuscules en majuscule 
 + 
 +Voir man sort pour les autres options. 
 +</​note>​ 
 + 
 +====Affichage de plusieurs fichiers avec sort ==== 
 + 
 +  * Comparaison avec la commande cat : 
 +<code user> 
 +cat sort1.txt 
 +</​code>​ 
 +<​code>​ 
 +5 1 Amandine 
 +1 7 Bruno  
 +3 2 Caroline 
 +</​code>​ 
 +<code user> 
 +cat sort2.txt 
 +<​code>​=== 
 +2 5 Daniel 
 +2 6 Émilien 
 +0 3 Fabrice 
 +0 4 Guillaume 
 +</​code>​ 
 + 
 +>Dans chacun de ses deux fichiers, les lignes ne sont pas rangées en fonction des colonnes 
 + 
 +<code user> 
 +sort sort1.txt sort2.txt 
 +</​code>​ 
 +<​code>​ 
 +0 3 Fabrice 
 +0 4 Guillaume 
 +1 7 Bruno  
 +2 5 Daniel 
 +2 6 Émilien 
 +3 2 Caroline 
 +5 1 Amandine 
 +</​code>​ 
 + 
 +>Même sans option, les deux fichiers ont été concaténés et leurs lignes rangées par ordre numérique croissant en fonction de la première colonne. 
 +>Si des doublons apparaissent dans la première colonne pour deux lignes consécutives,​ ces deux lignes seront rangées en fonction de leur deuxième colonne. 
 + 
 +====Enregistrer le résultat : option -o ==== 
 + 
 +  * Concaténer "​sort1.txt"​ et "​sort2.txt"​ et inscrire le résultat dans un fichier : 
 + 
 +<code user> 
 +sort -o sort3.txt sort1.txt sort2.txt 
 +</​code>​ 
 + 
 +<code user> 
 +cat sort3.txt 
 +</​code>​ 
 +<​code>​ 
 +0 3 Fabrice 
 +0 4 Guillaume 
 +1 7 Bruno  
 +2 5 Daniel 
 +2 6 Émilien 
 +3 2 Caroline 
 +5 1 Amandine 
 +</​code>​ 
 + 
 +====Trier selon un ordre alphabétique d'une colonne : option -d==== 
 + 
 + 
 +  * soit le fichier "​alpha-sort.txt"​ déjà trié par ordre numérique selon les colonnes 1 et 2 pour les doublons : 
 + 
 +<code user> 
 +cat alpha-sort.txt 
 +</​code>​ 
 +<​code>​ 
 +1 2 Francine 
 +2 3 Édith 
 +3 4 Géraldine 
 +4 5 Béatrice 
 +5 6 Christelle 
 +5 7 Dorothée 
 +6 8 Amanda 
 +</​code>​ 
 + 
 +  * Pour le trier selon l'​ordre alphabétique d'une colonne : 
 +Si on indique le type (numérique ou alphabétique),​ c'est que le type de la première colonne ne nous intéresse pas.\\  
 +Par exemple ici, le fichier est rangé selon l'​ordre numérique selon ses colonnes 1 et 2. 
 +<code user> 
 +sort -k3d alpha-sort.txt 
 +</​code>​ 
 +<​code>​ 
 +6 8 Amanda 
 +4 5 Béatrice 
 +5 6 Christelle 
 +2 3 Édith 
 +5 7 Dorothée 
 +1 2 Francine 
 +3 4 Géraldine 
 +</​code>​ 
 + 
 +> l'​option -k pour indiquer qu'on va utiliser une colonne spécifique pour le tri; 
 +>3 pour spécifier le n° de colonne 
 +>d pour spécifier le type de tri "​dictionnaire"​ ou ordre alphabétique 
 + 
 +====Trier selon l'​ordre numérique d'une colonne==== 
 +  * soit le fichier "​sort.txt"​ : 
 + 
 +<code user> 
 +cat sort.txt 
 +</​code>​ 
 +<​code>​  
 +pomme 2 
 +fraise 6 
 +abricot 9 
 +kiwi 3 
 +</​code>​ 
 + 
 +  * Pour ordonner ce fichier selon l'​ordre numérique de la deuxième colonne : 
 + 
 +<code user> 
 +sort -k2n sort.txt 
 +</​code>​ 
 + 
 +<​code>​ 
 +pomme 2 
 +kiwi 3 
 +fraise 6 
 +abricot 9 
 +</​code>​ 
 + 
 +<note tip> 
 +Si on avait voulu ranger ce fichier selon l'​ordre alphabétique,​ il aurait suffi de faire : 
 + 
 +  sort sort.txt  
 + 
 +Il aurait été inutile d'​indiquer la colonne car la première colonne comporte des chaînes de caractères.\\  
 + 
 +Comme vous l'​aurez compris, par défaut, sort trie en fonction de la colonne n°1 selon le type qui est le sien, puis s'il faut, en fonction de la colonne n° 2, et du type qui est celui de cette deuxième colonne.\\  
 + 
 +En fait, sed s'​adapte automatiquement au type du contenu de la première colonne, voire au type du contenu de la seconde colonne pour départager éventuellement les doublons de cette première colonne, même si les types diffèrent d'une colonne à l'​autre.\\  
 +</​note>​ 
 + 
 +====Tri par défaut d'un fichier dont les colonnes présentent plusieurs types==== 
 + 
 +  * Soit fichier "​xxx-sort.txt"​ désordonné selon ses types : 
 +<code user> 
 +cat xxx-sort.txt  
 +</​code>​ 
 +<​code>​ 
 +10 fraise 
 +pomme 6 
 +Titi grosminet 
 +25 8 
 +</​code>​ 
 +  * Par défaut, sort trie selon l'​ordre numérique d'​abord puis par ordre alphabétique :  
 +<code user> 
 +sort xxx-sort.txt 
 +</​code>​ 
 +<​code>​  
 +10 fraise 
 +25 8 
 +pomme 6 
 +Titi grosminet 
 +</​code>​ 
 + 
 +  * de même pour l'​autre colonne : 
 +<​code>​ 
 +sort -k2 xxx-sort.txt 
 +</​code>​ 
 +<​code>​ 
 +pomme 6 
 +25 8 
 +10 fraise 
 +Titi grosminet 
 +</​code>​ 
 + 
 + 
 +====Trier selon plusieurs colonnes et différents types ==== 
 + 
 +  * Soit le fichier "​sort4.txt"​ qui est un extrait du fichier **/​etc/​passwd** dont j'ai pris quelques lignes que ai interverties pour cet exemple : 
 +<code user> 
 +cat sort4.txt 
 +</​code>​ 
 +<​code>​ 
 +daemon:​x:​1:​1:​daemon:/​usr/​sbin:/​bin/​sh 
 +root:​x:​0:​0:​root:/​root:/​bin/​bash 
 +man:​x:​6:​12:​man:/​var/​cache/​man:/​bin/​sh 
 +bin:​x:​2:​2:​bin:/​bin:/​bin/​sh 
 +news:​x:​9:​9:​news:/​var/​spool/​news:/​bin/​sh 
 +sync:​x:​4:​65534:​sync:/​bin:/​bin/​sync 
 +games:​x:​5:​60:​games:/​usr/​games:/​bin/​sh 
 +mail:​x:​8:​8:​mail:/​var/​mail:/​bin/​sh 
 +lp:​x:​7:​7:​lp:/​var/​spool/​lpd:/​bin/​sh 
 +sys:​x:​3:​3:​sys:/​dev:/​bin/​sh 
 +</​code>​ 
 + 
 + 
 +  * Pour faire un tri selon le shell des utilisateurs (7ième colonnes : type "​dictionnaire"​) et en cas de doublon pour cette colonne, en fonction ensuite de l'UID (3ième colonne : type "​numérique"​) 
 + 
 +<code user> 
 +sort -t':'​ -k 7d -k 3n sort4.txt 
 +</​code>​ 
 + 
 +> **''​-t':'​ ''​** pour spécifier le séparateur **'':''​** (par défaut c'est l'​espace ou la tabulation, il faut donc indiquer le séparateur pour les fichiers de type.) 
 +> **''​-k''​** ​ pour indiquer les colonnes souhaitées 
 +> **''​7d''​** ​ pour **7**ième colonne type "​**d**ictionnaire"​ 
 +> **''​3n''​** ​ pour **3**ième colonne type "​**n**umérique"​ 
 + 
 +<​code>​ 
 +root:​x:​0:​0:​root:/​root:/​bin/​bash 
 +daemon:​x:​1:​1:​daemon:/​usr/​sbin:/​bin/​sh 
 +bin:​x:​2:​2:​bin:/​bin:/​bin/​sh 
 +sys:​x:​3:​3:​sys:/​dev:/​bin/​sh 
 +games:​x:​5:​60:​games:/​usr/​games:/​bin/​sh 
 +man:​x:​6:​12:​man:/​var/​cache/​man:/​bin/​sh 
 +lp:​x:​7:​7:​lp:/​var/​spool/​lpd:/​bin/​sh 
 +mail:​x:​8:​8:​mail:/​var/​mail:/​bin/​sh 
 +news:​x:​9:​9:​news:/​var/​spool/​news:/​bin/​sh 
 +sync:​x:​4:​65534:​sync:/​bin:/​bin/​sync 
 +</​code>​ 
 + 
 + 
 + 
 +=====la commande tr ===== 
 +Elle permet de traduire, c'​est-à-dire,​ changer des lettres 
 +===Syntaxe === 
 + 
 +  tr [options] ens1 ens2 
 + 
 +===Exemples === 
 +<code user> 
 +cat ~/​Essai-text-processing/​tr-essai 
 +</​code>​ 
 +<​code>​ 
 +Pierre Paul Jacques 
 +</​code>​ 
 + 
 +<code user> 
 +tr P p  < ~/​Essai-text-processing/​tr-essai 
 +</​code>​ 
 +<​code>​ 
 +pierre paul Jacques 
 +</​code>​ 
 + 
 +<code user> 
 +cat ~/​Essai-text-processing/​tr-essai 
 +</​code>​ 
 +<​code>​ 
 +Pierre Paul Jacques 
 +</​code>​ 
 + 
 +<code user> 
 +tr P X  < ~/​Essai-text-processing/​tr-essai 
 +</​code>​ 
 +<​code>​ 
 +Xierre Xaul Jacques 
 +</​code>​ 
 + 
 +<code user> 
 +cat ~/​Essai-text-processing/​tr-essai 
 +</​code>​ 
 +<​code>​ 
 +Pierre Paul Jacques 
 +</​code>​ 
 + 
 +<code user> 
 +tr PJ pj < ~/​Essai-text-processing/​tr-essai 
 +</​code>​ 
 +<​code>​ 
 +pierre paul jacques 
 +</​code>​ 
 + 
 + 
 + 
 +=====La commande ​uniq ===== 
 +Elle permet d'​éliminer les lignes dupliquées d'un fichier trié. 
 +===Syntaxe=== 
 + 
 +  uniq [options] [fichier-entrée] [fichier-sortie] 
 +   
 +===Préparation === 
 +<code user> 
 +cat ~/​Essai-text-processing/​users-uniq 
 +</​code>​ 
 +<​code>​ 
 +Papi 
 +1 Toto 
 +3 Lili 
 +2 Titi 
 +4 Mami 
 +003 Zaza 
 +01 Nani 
 +</​code>​ 
 +===Ajouter une ligne=== 
 +<code user> 
 +echo 01 Nani >> ~/​Essai-text-processing/​users-uniq 
 +</​code>​ 
 + 
 +=== Supprimer les doublons=== 
 +<code user> 
 +cat ~/​Essai-text-processing/​users-uniq 
 +</​code>​ 
 +<​code>​ 
 +5 Papi 
 +1 Toto 
 +3 Lili 
 +2 Titi 
 +4 Mami 
 +003 Zaza 
 +01 Nani 
 +01 Nani 
 +</​code>​ 
 +<​note>​ 
 +Il faut que les doublons soient consécutifs,​ et que le fichier soit "​trié"​ 
 +</​note>​ 
 +<code user> 
 +sort ~/​Essai-text-processing/​users-uniq | uniq > ~/​Essai-text-processing/​users-sort-uniq 
 +</​code>​ 
 +===Vérification=== 
 +<code user> 
 +cat ~/​Essai-text-processing/​users-sort-uniq 
 +</​code>​ 
 +<​code>​ 
 +003 Zaza 
 +01 Nani 
 +1 Toto 
 +2 Titi 
 +3 Lili 
 +4 Mami 
 +5 Papi 
 +</​code>​ 
 + 
 +=====La commande split ===== 
 +===Syntaxe === 
 + 
 +  split [options] [fichier_entrée [préfixe_sortie]] 
 + 
 +===Préparation === 
 +  * Création du fichier "​~/​Essai-text-processing/​liste-fruits"​ : 
 + 
 +<code user> 
 +cat > ~/​Essai-text-processing/​liste-fruits <<​EOF 
 +> 1 fraise 
 +> 2 abricot 
 +> 3 pomme 
 +> EOF 
 +</​code>​ 
 + 
 +  * Vérification : 
 + 
 +<code user> 
 +cat ~/​Essai-text-processing/​liste-fruits 
 +</​code>​ 
 +<​code>​ 
 +1 fraise 
 +2 abricot 
 +3 pomme 
 +</​code>​ 
 +====Découpage par taille et répartition en autant de fichiers ==== 
 +<​note>​ 
 +  * options de découpage par taille :\\ 
 + 
 +-C : découper par taille maximale\\ 
 +ex: split -C 5 fichier : découpage en 5 octets\\ 
 +    ( ou de même split -C 5b)\\ 
 +    
 +    split -C 5k fichier : découpage en 5 kilo-octets\\ 
 +    split -C 5m fichier : découpage en 5 mega-octets\\ 
 +-b : découper par 1 taille précise\\ 
 +Ex: split -b 5 fichier) => tous les fichiers créés par découpage auront cette taille (sauf peut-être le dernier) 
 + 
 +  * Remarque:​\\ 
 +     Il faut 8 bits pour faire 1 byte (1 octet) 
 +       - bit : c'est **Bi**naryDigi**T** : un bit est un chiffre binaire, la valeur d'un bit, c'est 0 ou 1. 
 +       - byte : terme anglais pour octet. L'​ordinaire calcule sur un ou plusieurs byte. 
 +</​note>​ 
 + 
 +  * Exemple de découpage par taille d'un octet avec le préfixe ''​fruit1b''​ : 
 + 
 +<code user> 
 +split -C 1b ~/​Essai-text-processing/​liste-fruits fruit1b 
 +</​code>​ 
 + 
 +>Le fichier n'est pas lourd et le découpage en taille de 1 byte (=octet) ne le découpe pas :  
 + 
 +<code user> 
 +ls fruit1b* 
 +</​code>​ 
 +<​code>​ 
 +fruit1baa 
 +</​code>​ 
 + 
 +>Un seul fichier a été créé.  
 +   
 +<code user> 
 +cat fruit1b* 
 +</​code>​ 
 +<​code>​ 
 +1 fraise 
 +2 abricot 
 +3 pomme 
 +</​code>​ 
 + 
 +>Le fichier est créé dans le répertoire dans lequel le terminal est ouvert.\\ 
 +Pour que le fichier créé, lors du découpage, se retrouve dans le répertoire du fichier à découper : 
 + 
 +<code user> 
 +split -C 1b ~/​Essai-text-processing/​liste-fruits fruit1b && mv fruit1b* ~/​Essai-text-processing/​ 
 +</​code>​ 
 +<​code>​  
 +ls ~/​Essai-text-processing/​fruit1b* 
 +</​code>​ 
 +<​code>​ 
 +/​home/​hypathie/​Essai-text-processing/​fruit1baa 
 +</​code>​ 
 +  * Ou encore : 
 +<code user> 
 +cd Essai-text-processing/​ 
 +</​code>​ 
 +<code user> 
 +split -C 1b ~/​Essai-text-processing/​liste-fruits fruit1b 
 +</​code>​ 
 +<code user> 
 +ls fruit1b* 
 +</​code>​ 
 +<​code>​ 
 +fruit1baa 
 +</​code>​ 
 + 
 +====Découpage par ligne ==== 
 +<​note>​ 
 +  * option de découpage par ligne qui détermine le découpage :\\ 
 +    -l : pour indiquer le nombre de ligne\\ 
 + 
 +  * Remarque :\\ 
 +     Sans indication de préfixe, par défaut les fichiers créés par le découpage porte le préfixe x?? 
 +</​note>​ 
 + 
 +<code user> 
 +cd Essai-text-processing/​ 
 +</​code>​ 
 +<code user> 
 +split -l 1 ~/​Essai-text-processing/​liste-fruits 
 +</​code>​ 
 +<code user> 
 + ls x* 
 +</​code>​ 
 +<​code>​ 
 +xaa  xab  xac 
 +</​code>​ 
 +<code user> 
 + cat x* 
 +</​code>​ 
 +<​code>​ 
 +1 fraise 
 +2 abricot 
 +3 pomme 
 +</​code>​ 
 + 
 +=====La commande unexpand ===== 
 +La commande "​unexpand"​ peut servir à convertir un groupe de sept espaces en une tabulation. 
 + 
 +===Syntaxe === 
 + 
 +  unexpand [-a] [fichier...] 
 + 
 +=== Préparation=== 
 +  * Création du fichier "​~/​Essai-text-processing/​users-infos-espaces"​ 
 +  * Avec 7 ou plus espaces pour ligne 1 et 3 
 +  * Avec moins de 7 espaces pour ligne 2 
 +<code user> 
 +cat > ~/​Essai-text-processing/​users-infos-espaces<<​EOF 
 +>         ​01 ​       Toto        toto@gmx.fr ​       modo 
 +>        02       ​Titi ​      ​titi@gmail.com ​      ​membre 
 +>          03         ​Lili ​        ​lili@hotmail.com ​        ​membre 
 +> EOF 
 +</​code>​ 
 +<​note>​ 
 +Ci-dessus ce sont plusieurs espaces qui sont insérés entre les chaînes de caractères. 
 +Pour intégrer le contenu d'un fichier avec les redirections et EOF, la touche tabulation ne fonctionne pas. 
 +</​note>​ 
 +====Convertir des espaces en tabulation ==== 
 +===Affichage avec cat : ce sont des espaces === 
 +<code user> 
 +cat ~/​Essai-text-processing/​users-infos-espaces 
 +# Retour : 
 +        01        Toto        toto@gmx.fr ​       modo 
 +       ​02 ​      ​Titi ​      ​titi@gmail.com ​      ​membre 
 +         ​03 ​        ​Lili ​        ​lili@hotmail.com ​        ​membre 
 +</​code>​ 
 +===Conversion des espaces en tabulation === 
 +<code user> 
 +unexpand -a ~/​Essai-text-processing/​users-infos-espaces 
 +</​code>​ 
 +<​code>​ 
 + 01   Toto       toto@gmx.fr modo 
 +       ​02 Titi  ​  ​titi@gmail.com membre 
 + 03     Lili lili@hotmail.com  ​ membre 
 + 
 +</​code>​ 
 +<​note>​ 
 +  * Option ''​-a''​ pour que la conversion des espaces ait lieu partout et pas seulement pour les espaces constituants la première colonnes de droite. 
 +  * Les groupes de moins de sept espaces consécutifs n'ont pas été convertis en tabulation.  
 +</​note>​ 
 +=====La commande "​expand"​ ===== 
 +La commande "​expand"​ peut servir à convertir les tabulations en espaces. 
 + 
 +===Syntaxe === 
 + 
 +  expand [-t numero] [fichier...] 
 + 
 +===Préparation === 
 +Soit le fichier "​~/​Essai-text-processing/​users-infos-tabul"​ contenant des tabulations 
 +<code user> 
 +unexpand -a ~/​Essai-text-processing/​users-infos-espaces > ~/​Essai-text-processing/​users-infos-tabul 
 +</​code>​ 
 + 
 +=== Visualisation=== 
 + 
 +<code user> 
 +cat ~/​Essai-text-processing/​users-infos-tabul 
 +# Retour : 
 + 01   Toto       toto@gmx.fr modo 
 +       ​02 Titi  ​  ​titi@gmail.com membre 
 + 03     Lili lili@hotmail.com  ​ membre 
 + 
 +</​code>​ 
 +====Convertion des tabulations en espaces==== 
 + 
 +<code user> 
 +expand ~/​Essai-text-processing/​users-infos-tabul 
 +# Retour : 
 +        01        Toto        toto@gmx.fr ​       modo 
 +       ​02 ​      ​Titi ​      ​titi@gmail.com ​      ​membre 
 +         ​03 ​        ​Lili ​        ​lili@hotmail.com ​        ​membre 
 + 
 +</​code>​ 
 +===Déterminer le nombre d'​espaces qui remplaceront chaque tabulation==== 
 +  * option ''​-t''​ nombre 
 +<code user> 
 +expand -t 1 ~/​Essai-text-processing/​users-infos-tabul 
 +# Retour : 
 + ​01 ​  ​Toto ​      ​toto@gmx.fr ​ modo 
 +       02 Titi    titi@gmail.com membre 
 +  03     ​Lili ​ lili@hotmail.com ​  ​membre 
 +</​code>​
  
 +====Aller plus loin avec les commandes expand et unexpand ====
 +Voir : [[doc:​systeme:​expand |expand]]
  
doc/systeme/commandes/les-commandes-join-paste-split-et-nl.txt · Dernière modification: 06/11/2015 17:57 par paskal

Pied de page des forums

Propulsé par FluxBB