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 [10/07/2014 09:55]
Hypathie [Les commandes expand et unexpand]
doc:systeme:commandes:les-commandes-join-paste-split-et-nl [06/08/2014 17:51]
Hypathie [sort]
Ligne 20: Ligne 20:
 Nous allons aborder quelques commandes complémentaires permettant de : Nous allons aborder quelques commandes complémentaires permettant de :
  
-  * améliorer l'​affichage : fnt ; nl+  * améliorer l'​affichage : fmt ; nl
   * combiner le contenu de fichiers : join ; paste    * combiner le contenu de fichiers : join ; paste 
-  * transformer le contenu de fichier ​: sort ; split ; tr ; uniq ; expand et unexpand+  * transformer le contenu de fichiers ​: sort ; split ; tr ; uniq ; expand et unexpand
  
  
Ligne 36: Ligne 36:
 <code user> <code user>
 cat > ~/​Essai-text-processing/​essai-fmt <<EOF 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 !+> 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 > EOF
 </​code>​ </​code>​
Ligne 171: Ligne 172:
  
 <​note>​ <​note>​
-Par défaut la commande nl numérote les lignes non-vides.\+Par défaut la commande nl numérote les lignes non-vides.
   * Quelques options :\\   * Quelques options :\\
     - -b : numérotation des lignes vides     - -b : numérotation des lignes vides
Ligne 300: Ligne 301:
   sort [options [+POS1] [-POS2]] [fichier...]   sort [options [+POS1] [-POS2]] [fichier...]
  
-===Préparation===+<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 ====
  
-Soit le fichier "​~/​Essai-text-processing/​users.sort"​+  * Comparaison avec la commande cat :
 <code user> <code user>
-cat ~/​Essai-text-processing/​users.sort+cat sort1.txt
 </​code>​ </​code>​
 <​code>​ <​code>​
-Papi +1 Amandine 
-Toto +7 Bruno  
-Lili +3 2 Caroline
-Titi +
-4 Mami +
-003 Zaza +
-01 Nani+
 </​code>​ </​code>​
-=== Tri par défaut=== 
 <code user> <code user>
-sort ~/​Essai-text-processing/​users.sort+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>​
 <​code>​ <​code>​
-003 Zaza +0 3 Fabrice 
-01 Nani +0 4 Guillaume 
-Toto +7 Bruno  
-Titi +5 Daniel 
-Lili +2 6 Émilien 
-4 Mami +2 Caroline 
-Papi+1 Amandine
 </​code>​ </​code>​
  
-===Tri alphabétique d'une simple colonne===+>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> <code user>
-cat ~/Essai-text-processing/sort.abc+sort -o sort3.txt sort1.txt sort2.txt 
 +</code> 
 + 
 +<code user> 
 +cat sort3.txt
 </​code>​ </​code>​
 <​code>​ <​code>​
-tomate +0 3 Fabrice 
-fraise +0 4 Guillaume 
-abricot +1 7 Bruno  
-ananas +2 5 Daniel 
-kiwi +2 6 Émilien 
-pomme+3 2 Caroline 
 +5 1 Amandine
 </​code>​ </​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> <code user>
-sort ~/​Essai-text-processing/sort.abc+cat alpha-sort.txt
 </​code>​ </​code>​
 <​code>​ <​code>​
-abricot +1 2 Francine 
-ananas +2 3 Édith 
-fraise +3 4 Géraldine 
-kiwi +4 5 Béatrice 
-pomme +5 6 Christelle 
-tomate+5 7 Dorothée 
 +6 8 Amanda
 </​code>​ </​code>​
  
-===Tri avec choix de colonne ​===+  * 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> <code user>
-cat ~/Essai-text-processing/sort.abc+sort -k3d alpha-sort.txt
 </​code>​ </​code>​
 <​code>​ <​code>​
-tomate:+6 8 Amanda 
-fraise:1 +5 Béatrice 
-abricot:+5 6 Christelle 
-ananas:6 +3 Édith 
-kiwi:+7 Dorothée 
-pomme:3+1 2 Francine 
 +4 Géraldine
 </​code>​ </​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> <code user>
-sort -t':'​ -k 2n ~/​Essai-text-processing/​sort.abc +cat sort.txt 
-fraise:1 +</​code>​ 
-abricot:2 +<​code>​  
-pomme:+pomme 2 
-tomate:4 +fraise ​6 
-kiwi:5 +abricot ​9 
-ananas:6+kiwi 
 +</​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>​ </​code>​
  
 <note tip> <note tip>
-Les options utiles+Si on avait voulu ranger ce fichier selon l'​ordre alphabétique,​ il aurait suffi de faire : 
-  ​''​-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 +  ​sort sort.txt  
-  * ''​-2''​ : n° de colonne + 
-  ​* ​''​-n''​ : pour spécifier qu'il s'​agit ​d'un tri numérique  +Il aurait été inutile d'indiquer la colonne car la première colonne comporte des chaînes de caractères.\\  
-  * ''​-d''​ : pour tri dictionnaire + 
-  * ''​-r''​ : pour un tri inverse (-rn ou -rd) +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.\\  
-  * ''​-M''​ : ordre chronologique+ 
 +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>​ </​note>​
-===Tri ​selon plusieurs ​colonnes ===+ 
 +====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> <code user>
-cat ~/Essai-text-processing/​sort.123abc+cat xxx-sort.txt 
 </​code>​ </​code>​
 <​code>​ <​code>​
-tomate:​x:​c +10 fraise 
-fraise:1 +pomme 6 
-abricot:2 +Titi grosminet 
-ananas:x:b +25 8
-kiwi:x:a +
-pomme:3+
 </​code>​ </​code>​
 +  * Par défaut, sort trie selon l'​ordre numérique d'​abord puis par ordre alphabétique : 
 <code user> <code user>
-sort -t':'​ -k 2n -k 3d ~/​Essai-text-processing/​sort.123abc+sort xxx-sort.txt
 </​code>​ </​code>​
 +<​code> ​
 +10 fraise
 +25 8
 +pomme 6
 +Titi grosminet
 +</​code>​
 +
 +  * de même pour l'​autre colonne :
 <​code>​ <​code>​
-kiwi:x:a +sort -k2 xxx-sort.txt
-ananas:​x:​b +
-tomate:​x:​c +
-fraise:1 +
-abricot:2 +
-pomme:3+
 </​code>​ </​code>​
 +<​code>​
 +pomme 6
 +25 8
 +10 fraise
 +Titi grosminet
 +</​code>​
 +
 +
 +====Trier selon plusieurs colonnes et différents types ====
  
-=== Concaténer et créer ​un fichier ​avec la résultat===+  * 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> <code user>
-sort -t':' -k 2n -k 3d ~/Essai-text-processing/sort.123abc > ~/Essai-text-processing/sort.123abc.ok+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>​ </​code>​
  
-===Vérifier ===+ 
 +  * 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> <code user>
-cat ~/Essai-text-processing/​sort.123abc.okkiwi:​x:​a+sort -t':' ​-k 7d -k 3n sort4.txt
 </​code>​ </​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>​ <​code>​
-ananas:x:b +root:x:0:​0:​root:/​root:/​bin/​bash 
-tomate:x:+daemon:x:1:1:​daemon:/​usr/​sbin:/​bin/​sh 
-fraise:1 +bin:x:2:​2:​bin:/​bin:/​bin/​sh 
-abricot:2 +sys:x:3:​3:​sys:/​dev:/​bin/​sh 
-pomme:3+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>​ </​code>​
 +
 +
  
 =====la commande tr ===== =====la commande tr =====
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