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 [02/08/2014 01:53] martinux_qc [la commande fmt] |
doc:systeme:commandes:les-commandes-join-paste-split-et-nl [06/08/2014 16:43] Hypathie [sort] |
||
---|---|---|---|
Ligne 172: | 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 301: | 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 | ||
+ | </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> | ||
- | 5 Papi | + | 5 1 Amandine |
- | 1 Toto | + | 1 7 Bruno |
- | 3 Lili | + | 3 2 Caroline |
- | 2 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 | + | 2 6 Émilien |
- | 1 Toto | + | 0 3 Fabrice |
- | 2 Titi | + | 0 4 Guillaume |
- | 3 Lili | + | |
- | 4 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:4 | + | 0 3 Fabrice |
- | fraise:1 | + | 0 4 Guillaume |
- | abricot:2 | + | 1 7 Bruno |
- | ananas:6 | + | 2 5 Daniel |
- | kiwi:5 | + | 2 6 Émilien |
- | pomme:3 | + | 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 1 et 2 pour les doublons : |
- | pomme:3 | + | |
- | 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 | + | 1 2 Francine |
- | fraise:1 | + | 2 3 Édith |
- | abricot:2 | + | 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:2 | + | 5 7 Dorothée |
- | pomme:3 | + | 1 2 Francine |
+ | 3 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:c | + | 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 ===== |