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 →
Ci-dessous, les différences entre deux révisions de la page.
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 [06/08/2014 16:43] Hypathie [sort] |
doc:systeme:commandes:les-commandes-join-paste-split-et-nl [08/10/2015 18:18] milou [La commande join] |
||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
* 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>grand-débutant }} | + | * Niveau requis : {{tag>débutant avisé}} |
* 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>à-placer}} | + | * Suivi : {{tag>à-tester}} |
- | * Création par [[user>Hypathie]] 07/06/2014 | + | * Création par [[user>Hypathie]] le 07/06/2014 |
- | * Testé par <...> le <...> FIXME | + | * Testé par <...> le <...> |
* 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 !)) | * 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 : 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 ! | ||
===== Introduction ===== | ===== Introduction ===== | ||
Ligne 47: | Ligne 44: | ||
cat ~/Essai-text-processing/essai-fmt | cat ~/Essai-text-processing/essai-fmt | ||
</code> | </code> | ||
- | <code> | + | <file config retour de la commande> |
chez debian-facile c'est facile ... très facile ... très très facile ... très tr | 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 ! | ès très très très très facile ... facile et encore facile ! | ||
- | </code> | + | </file> |
>L'affichage avec la commande ''cat'' peut être difficile à lire. | >L'affichage avec la commande ''cat'' peut être difficile à lire. | ||
Ligne 58: | Ligne 55: | ||
fmt ~/Essai-text-processing/essai-fmt | fmt ~/Essai-text-processing/essai-fmt | ||
</code> | </code> | ||
- | <code> | + | <file config retour de la commande> |
chez debian-facile c'est facile ... très facile ... très très 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 | ... très très très très très très facile ... facile et encore | ||
facile ! | facile ! | ||
- | </code> | + | </file> |
<note> | <note> | ||
* Par défaut, la commande ''fmt'' affiche le contenu d'un fichier par ligne de 75 caractères maximum. | * 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 | * L'option ''-w'' : pour indiquer le nombre de caractère par ligne | ||
<code user> | <code user> | ||
fmt -w 20 ~/Essai-text-processing/essai-fmt | fmt -w 20 ~/Essai-text-processing/essai-fmt | ||
</code> | </code> | ||
- | <code> | + | <file config retour de la commande> |
chez debian-facile | chez debian-facile | ||
c'est facile | c'est facile | ||
Ligne 79: | Ligne 77: | ||
... facile et | ... facile et | ||
encore facile ! | encore facile ! | ||
- | </code> | + | </file> |
</note> | </note> | ||
Ligne 86: | Ligne 84: | ||
fmt -w 20 ~/Essai-text-processing/essai-fmt | less | fmt -w 20 ~/Essai-text-processing/essai-fmt | less | ||
</code> | </code> | ||
- | <code> | + | <file config retour de la commande> |
chez debian-facile | chez debian-facile | ||
c'est facile | c'est facile | ||
Ligne 97: | Ligne 95: | ||
encore facile ! | encore facile ! | ||
(END) | (END) | ||
- | </code> | + | </file> |
* Voir [[doc:editeurs:less| la commande less]] | * Voir [[doc:editeurs:less| la commande less]] | ||
Ligne 118: | Ligne 116: | ||
</code> | </code> | ||
- | <code> | + | <file config retour de la commande> |
# ~/.bashrc: executed by bash(1) for non-login shells. | # ~/.bashrc: executed by bash(1) for non-login shells. | ||
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) | # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) | ||
Ligne 128: | Ligne 126: | ||
*) return;; | *) return;; | ||
esac | esac | ||
- | </code> | + | </file> |
>Premières lignes du retour. | >Premières lignes du retour. | ||
===Affichage numéroté === | ===Affichage numéroté === | ||
- | <code> | + | <code user> |
nl ~/Essai-text-processing/bashrc-bis | nl ~/Essai-text-processing/bashrc-bis | ||
- | </code user> | + | </code> |
- | <code> | + | <file config retour de la commande> |
- | 1 # ~/.bashrc: executed by bash(1) for non-login shells. | + | 1 # ~/.bashrc: executed by bash(1) for non-login shells. |
- | 2 # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) | + | 2 # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) |
- | 3 # for examples | + | 3 # for examples |
- | | + | |
- | 4 # If not running interactively, don't do anything | + | 4 # If not running interactively, don't do anything |
- | 5 case $- in | + | 5 case $- in |
- | 6 *i*) ;; | + | 6 *i*) ;; |
- | 7 *) return;; | + | 7 *) return;; |
- | 8 esac | + | 8 esac |
- | + | </file> | |
- | </code> | + | |
>Premières lignes du retour | >Premières lignes du retour | ||
Ligne 156: | Ligne 153: | ||
fmt -w 65 ~/Essai-text-processing/bashrc-bis | nl ~/Essai-text-processing/bashrc-bis | less | fmt -w 65 ~/Essai-text-processing/bashrc-bis | nl ~/Essai-text-processing/bashrc-bis | less | ||
</code> | </code> | ||
- | <code> | + | <file config retour de la commande> |
1 # ~/.bashrc: executed by bash(1) for non-login shells. | 1 # ~/.bashrc: executed by bash(1) for non-login shells. | ||
2 # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) | 2 # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) | ||
Ligne 167: | Ligne 164: | ||
8 esac | 8 esac | ||
- | </code> | + | </file> |
>Premières lignes du retour | >Premières lignes du retour | ||
Ligne 183: | Ligne 180: | ||
=====La commande join ===== | =====La commande join ===== | ||
===Syntaxe de la commande join === | ===Syntaxe de la commande join === | ||
- | <code user> | + | <code> |
join [options]... fichier1 fichier2 | join [options]... fichier1 fichier2 | ||
</code> | </code> | ||
Ligne 192: | Ligne 189: | ||
cat ~/Essai-text-processing/users | cat ~/Essai-text-processing/users | ||
</code> | </code> | ||
- | <code> | + | <file config retour de la commande> |
01 Toto | 01 Toto | ||
02 Titi | 02 Titi | ||
03 Lili | 03 Lili | ||
- | </code> | + | </file> |
<code user> | <code user> | ||
Ligne 202: | Ligne 199: | ||
</code> | </code> | ||
- | <code> | + | <file config retour de la commande> |
toto@gmail.com 01 | toto@gmail.com 01 | ||
titi@gmx.fr 02 | titi@gmx.fr 02 | ||
lili@hotmail.com 03 | lili@hotmail.com 03 | ||
- | </code> | + | </file> |
===Fusion de ces deux fichiers === | ===Fusion de ces deux fichiers === | ||
- | <code> | + | <code user> |
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> | ||
- | <code> | + | <file config retour de la commande> |
01 Toto toto@gmail.com | 01 Toto toto@gmail.com | ||
02 Titi titi@gmx.fr | 02 Titi titi@gmx.fr | ||
03 Lili lili@hotmail.com | 03 Lili lili@hotmail.com | ||
- | </code> | + | </file> |
* Explications : | * Explications : | ||
* l'option ''-1'' : donne le n° de colonne du champ commun, pour le premier document | * l'option ''-1'' : donne le n° de colonne du champ commun, pour le premier document | ||
Ligne 230: | Ligne 227: | ||
<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> | ||
Ligne 242: | Ligne 240: | ||
</code> | </code> | ||
- | <code> | + | <file config retour de la commande> |
01 Toto toto@gmail.com | 01 Toto toto@gmail.com | ||
02 Titi titi@gmx.fr | 02 Titi titi@gmx.fr | ||
03 Lili lili@hotmail.com | 03 Lili lili@hotmail.com | ||
- | </code> | + | </file> |
=====La commande paste ===== | =====La commande paste ===== | ||
===Syntaxe de la commande paste === | ===Syntaxe de la commande paste === | ||
Ligne 290: | Ligne 288: | ||
=== Vérification === | === Vérification === | ||
- | <code user> | + | <code> |
01 Toto toto@gmail.com 01 | 01 Toto toto@gmail.com 01 | ||
02 Titi titi@gmx.fr 02 | 02 Titi titi@gmx.fr 02 | ||
03 Lili lili@hotmail.com 03 | 03 Lili lili@hotmail.com 03 | ||
</code> | </code> | ||
- | |||
- | ===== sort ===== | ||
- | ===Syntaxe=== | ||
- | |||
- | 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 | ||
- | </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 : 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 avec sort par alphabétique : | ||
- | <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 | ||
- | |||
- | ====Tri selon plusieurs types ==== | ||
- | |||
- | * Soit le fichier "sort4.txt" qui est un extrait mélangé du fichier /etc/passwd : | ||
- | <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) et en cas de doublon pour cette colonne, en fonction ensuite de l'UID (3ième colonne) | ||
- | |||
- | <code user> | ||
- | sort -t':' -k 7d -k 3n sort4.txt | ||
- | </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> | ||
- | 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> | ||
- | |||