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:29]
Hypathie [la commande tr]
doc:systeme:commandes:les-commandes-join-paste-split-et-nl [06/08/2014 16:43]
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__ :
  
-Soit le fichier ​"​~/​Essai-text-processing/users.sort"+  * 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 
 +</note> 
 + 
 + 
 + 
 +====Affichage de plusieurs fichiers avec 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>​+
 <​code>​ <​code>​
-003 Zaza +2 5 Daniel 
-01 Nani +6 Émilien 
-1 Toto +Fabrice 
-Titi +Guillaume
-Lili +
-Mami +
-5 Papi+
 </​code>​ </​code>​
  
-===Tri alphabétique d'une simple colonne===+>Dans chacun de ses deux fichiers, les lignes ne sont pas rangées en fonction des colonnes
  
 <code user> <code user>
-cat ~/​Essai-text-processing/​sort.abc+sort sort1.txt sort2.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>​
 +
 +>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>
-sort ~/Essai-text-processing/​sort.abc +sort -o sort3.txt sort1.txt sort2.txt
-</​code>​ +
-<​code>​ +
-abricot +
-ananas +
-fraise +
-kiwi +
-pomme +
-tomate+
 </​code>​ </​code>​
  
-===Tri avec choix de colonne === 
 <code user> <code user>
-cat ~/​Essai-text-processing/​sort.abc+cat sort3.txt
 </​code>​ </​code>​
 <​code>​ <​code>​
-tomate:+0 3 Fabrice 
-fraise:+Guillaume 
-abricot:+7 Bruno  
-ananas:+5 Daniel 
-kiwi:5 +Émilien 
-pomme:3+2 Caroline 
 +5 1 Amandine
 </​code>​ </​code>​
  
-<code user> +====Trier selon un ordre alphabétique ​option ​-d==== 
-sort -t':' ​-k 2n ~/Essai-text-processing/​sort.abc + 
-fraise:1 + 
-abricot:2 +  * soit le fichier "alpha-sort.txt" déjà trié par ordre numérique selon les colonnes ​et pour les doublons ​:
-pomme:+
-tomate:4 +
-kiwi:5 +
-ananas:6 +
-</​code>​+
  
-<note tip> 
-Les options utiles: 
-  * ''​-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 
-  * ''​-2''​ : n° de colonne 
-  * ''​-n''​ : pour spécifier qu'il s'agit d'un tri numérique ​ 
-  * ''​-d''​ : pour tri dictionnaire 
-  * ''​-r''​ : pour un tri inverse (-rn ou -rd) 
-  * ''​-M''​ : ordre chronologique 
-</​note>​ 
-===Tri selon plusieurs colonnes === 
 <code user> <code user>
-cat ~/Essai-text-processing/​sort.123abc+cat alpha-sort.txt
 </​code>​ </​code>​
 <​code>​ <​code>​
-tomate:​x:​c +2 Francine 
-fraise:+3 Édith 
-abricot:+3 4 Géraldine 
-ananas:x:b +4 5 Béatrice 
-kiwi:x:a +5 6 Christelle 
-pomme:3+5 7 Dorothée 
 +6 8 Amanda
 </​code>​ </​code>​
  
 +  * Pour le trier avec sort par alphabétique :
 <code user> <code user>
-sort -t':' ​-k 2n -k 3d ~/​Essai-text-processing/​sort.123abc+sort -k3d alpha-sort.txt
 </​code>​ </​code>​
 <​code>​ <​code>​
-kiwi:x:a +6 8 Amanda 
-ananas:x:b +4 5 Béatrice 
-tomate:x:c +5 6 Christelle 
-fraise:1 +2 3 Édith 
-abricot:+5 7 Dorothée 
-pomme:3+Francine 
 +4 Géraldine
 </​code>​ </​code>​
  
-=== Concaténer et créer un fichier avec la résultat===+> 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 
 + 
 +====Tri selon plusieurs types ==== 
 + 
 +  * Soit le fichier "​sort4.txt"​ qui est un extrait mélangé du fichier /etc/passwd :
 <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) et en cas de doublon pour cette colonne, en fonction ensuite de l'UID (3ième colonne)
  
 <code user> <code user>
-cat ~/Essai-text-processing/​sort.123abc.okkiwi:​x:​a+sort -t':' ​-k 7d -k 3n sort4.txt
 </​code>​ </​code>​
 +
 +> option -t':'​ pour spécifier le séparateur (par défaut c'est l'​espace ou la tabulation)\\ ​
 +> option -k pour indiquer les colonnes souhaitées\\ ​
 +> => **''​-t':'​ -k 7d -k 3n''​**
 +
 <​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 =====
Ligne 475: Ligne 504:
 <code user> <code user>
 tr PJ pj < ~/​Essai-text-processing/​tr-essai tr PJ pj < ~/​Essai-text-processing/​tr-essai
 +</​code>​
 +<​code>​
 pierre paul jacques pierre paul jacques
 </​code>​ </​code>​
Ligne 489: Ligne 520:
 <code user> <code user>
 cat ~/​Essai-text-processing/​users-uniq cat ~/​Essai-text-processing/​users-uniq
-# Retour:+</​code>​ 
 +<​code>​
 Papi Papi
 1 Toto 1 Toto
Ligne 498: Ligne 530:
 01 Nani 01 Nani
 </​code>​ </​code>​
-===ajouter ​une ligne===+===Ajouter ​une ligne===
 <code user> <code user>
 echo 01 Nani >> ~/​Essai-text-processing/​users-uniq echo 01 Nani >> ~/​Essai-text-processing/​users-uniq
Ligne 506: Ligne 538:
 <code user> <code user>
 cat ~/​Essai-text-processing/​users-uniq cat ~/​Essai-text-processing/​users-uniq
-# Retour:+</​code>​ 
 +<​code>​
 5 Papi 5 Papi
 1 Toto 1 Toto
Ligne 525: Ligne 558:
 <code user> <code user>
 cat ~/​Essai-text-processing/​users-sort-uniq cat ~/​Essai-text-processing/​users-sort-uniq
-# Retour :+</​code>​ 
 +<​code>​
 003 Zaza 003 Zaza
 01 Nani 01 Nani
Ligne 541: Ligne 575:
  
 ===Préparation === ===Préparation ===
-Création du fichier "​~/​Essai-text-processing/​liste-fruits"​+  * Création du fichier "​~/​Essai-text-processing/​liste-fruits" ​:
  
 <code user> <code user>
Ligne 551: Ligne 585:
 </​code>​ </​code>​
  
-Vérification :+  * Vérification :
  
 <code user> <code user>
 cat ~/​Essai-text-processing/​liste-fruits cat ~/​Essai-text-processing/​liste-fruits
-# Retour:+</​code>​ 
 +<​code>​
 1 fraise 1 fraise
 2 abricot 2 abricot
 3 pomme 3 pomme
 </​code>​ </​code>​
-===Découpage ​en taille et répartition en autant de fichiers ===+====Découpage ​par taille et répartition en autant de fichiers ​====
 <​note>​ <​note>​
   * options de découpage par taille :\\   * options de découpage par taille :\\
Ligne 579: Ligne 614:
 </​note>​ </​note>​
  
-  * exemple ​de découpage par taille d'un octet avec le préfixe ​"fruit1b"+  * Exemple ​de découpage par taille d'un octet avec le préfixe ​''​fruit1b''​ :
  
 <code user> <code user>
 split -C 1b ~/​Essai-text-processing/​liste-fruits fruit1b split -C 1b ~/​Essai-text-processing/​liste-fruits fruit1b
 </​code>​ </​code>​
-Le fichier n'est pas lourd et le découpage en taille de 1 byte (=octet) ne le découpe pas : + 
 +>Le fichier n'est pas lourd et le découpage en taille de 1 byte (=octet) ne le découpe pas :  
 <code user> <code user>
 ls fruit1b* ls fruit1b*
-# Retour+</​code>​ 
 +<​code>​
 fruit1baa fruit1baa
 </​code>​ </​code>​
  
-Un seul fichier a été créé ​ +>Un seul fichier a été créé.  
 +  
 <code user> <code user>
 cat fruit1b* cat fruit1b*
-# Retour :+</​code>​ 
 +<​code>​
 1 fraise 1 fraise
 2 abricot 2 abricot
 3 pomme 3 pomme
 </​code>​ </​code>​
-Et le fichier ​et créé dans le répertoire dans lequel le terminal est ouvert.\ + 
-Pour que le fichier créé lors du découpage ​soit dans le répertoire du fichier à découper :+>​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> <code user>
 split -C 1b ~/​Essai-text-processing/​liste-fruits fruit1b && mv fruit1b* ~/​Essai-text-processing/​ split -C 1b ~/​Essai-text-processing/​liste-fruits fruit1b && mv fruit1b* ~/​Essai-text-processing/​
-#puis +</​code>​ 
 +<​code> ​
 ls ~/​Essai-text-processing/​fruit1b* ls ~/​Essai-text-processing/​fruit1b*
-# Retour:+</​code>​ 
 +<​code>​
 /​home/​hypathie/​Essai-text-processing/​fruit1baa /​home/​hypathie/​Essai-text-processing/​fruit1baa
 </​code>​ </​code>​
-Ou+  * Ou encore :
 <code user> <code user>
 cd Essai-text-processing/​ cd Essai-text-processing/​
-# puis:+</​code>​ 
 +<code user>
 split -C 1b ~/​Essai-text-processing/​liste-fruits fruit1b split -C 1b ~/​Essai-text-processing/​liste-fruits fruit1b
-# puis :+</​code>​ 
 +<code user>
 ls fruit1b* ls fruit1b*
 +</​code>​
 +<​code>​
 fruit1baa fruit1baa
 </​code>​ </​code>​
  
-===Découpage par ligne ===+====Découpage par ligne ====
 <​note>​ <​note>​
   * option de découpage par ligne qui détermine le découpage :\\   * option de découpage par ligne qui détermine le découpage :\\
Ligne 630: Ligne 677:
 <code user> <code user>
 cd Essai-text-processing/​ cd Essai-text-processing/​
-# puis:+</​code>​ 
 +<code user>
 split -l 1 ~/​Essai-text-processing/​liste-fruits split -l 1 ~/​Essai-text-processing/​liste-fruits
-# puis:+</​code>​ 
 +<code user>
  ls x*  ls x*
-# Retour:+</​code>​ 
 +<​code>​
 xaa  xab  xac xaa  xab  xac
-# puis:+</​code>​ 
 +<code user>
  cat x*  cat x*
-# Retour :+</​code>​ 
 +<​code>​
 1 fraise 1 fraise
 2 abricot 2 abricot
Ligne 644: Ligne 696:
 </​code>​ </​code>​
  
-=====Les commandes expand et unexpand ===== +=====La commande ​unexpand ===== 
-====unexpand ​==== +La commande "​unexpand" ​peut servir à convertir un groupe ​de sept espaces en une tabulation.
-La commande "​unexpand" ​convertit les groupes ​de espaces en tabulation+
  
 ===Syntaxe === ===Syntaxe ===
Ligne 667: Ligne 718:
 Pour intégrer le contenu d'un fichier avec les redirections et EOF, la touche tabulation ne fonctionne pas. Pour intégrer le contenu d'un fichier avec les redirections et EOF, la touche tabulation ne fonctionne pas.
 </​note>​ </​note>​
 +====Convertir des espaces en tabulation ====
 ===Affichage avec cat : ce sont des espaces === ===Affichage avec cat : ce sont des espaces ===
 <code user> <code user>
Ligne 675: Ligne 727:
          ​03 ​        ​Lili ​        ​lili@hotmail.com ​        ​membre          ​03 ​        ​Lili ​        ​lili@hotmail.com ​        ​membre
 </​code>​ </​code>​
-===conversion ​des espaces en tabulation ===+===Conversion ​des espaces en tabulation ===
 <code user> <code user>
 unexpand -a ~/​Essai-text-processing/​users-infos-espaces unexpand -a ~/​Essai-text-processing/​users-infos-espaces
-# Retour:+</​code>​ 
 +<​code>​
  01   Toto       toto@gmx.fr modo  01   Toto       toto@gmx.fr modo
        ​02 Titi  ​  ​titi@gmail.com membre        ​02 Titi  ​  ​titi@gmail.com membre
Ligne 685: Ligne 738:
 </​code>​ </​code>​
 <​note>​ <​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 +  * 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 espaces consécutifs n'ont pas été convertis en tabulation  +  * Les groupes de moins de sept espaces consécutifs n'ont pas été convertis en tabulation 
-</note +</note> 
-====La commande "​expand"​ ==== +=====La commande "​expand" ​===== 
-La commande "​expand" ​convertit ​les tabulations en espaces+La commande "​expand" ​peut servir à convertir ​les tabulations en espaces.
  
 ===Syntaxe === ===Syntaxe ===
Ligne 711: Ligne 764:
  
 </​code>​ </​code>​
-===Convertion des tabulations en espaces===+====Convertion des tabulations en espaces====
  
 <code user> <code user>
Ligne 721: Ligne 774:
  
 </​code>​ </​code>​
-=== déterminer ​le nombre d'​espaces qui remplaceront chaque tabulation=== +==== Déterminer ​le nombre d'​espaces qui remplaceront chaque tabulation==== 
-  * option -t nombre+  * option ​''​-t'' ​nombre
 <code user> <code user>
 expand -t 1 ~/​Essai-text-processing/​users-infos-tabul expand -t 1 ~/​Essai-text-processing/​users-infos-tabul
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