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 [08/06/2014 10:44] Hypathie [Les commandes : d'autres commandes pour la gestion des fichiers-texte] |
doc:systeme:commandes:les-commandes-join-paste-split-et-nl [06/08/2014 16:43] Hypathie [sort] |
||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
* 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>à-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 !)) | + | * 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 ! | ||
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 31: | Ligne 31: | ||
fmt [options] [fichier...] | fmt [options] [fichier...] | ||
| | ||
- | === préparation=== | + | === Préparation=== |
Création du fichier "~/Essai-text-processing/essai-fmt" | Création du fichier "~/Essai-text-processing/essai-fmt" | ||
<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> | ||
===Affichage du contenu d'un fichier en respectant les mots === | ===Affichage du contenu d'un fichier en respectant les mots === | ||
- | * L'affichage avec la commande "cat" est parfois difficile à lire: | + | |
+ | * Affichage avec la commande ''cat'' | ||
<code user> | <code user> | ||
cat ~/Essai-text-processing/essai-fmt | cat ~/Essai-text-processing/essai-fmt | ||
- | # Retour : | + | </code> |
+ | <code> | ||
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> | </code> | ||
- | * Affichage avec la commande "fmt" : | + | >L'affichage avec la commande ''cat'' peut être difficile à lire. |
+ | |||
+ | * Affichage avec la commande ''fmt'' : | ||
<code user> | <code user> | ||
fmt ~/Essai-text-processing/essai-fmt | fmt ~/Essai-text-processing/essai-fmt | ||
- | # Retour : | + | </code> |
+ | <code> | ||
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 | ||
Ligne 58: | Ligne 64: | ||
</code> | </code> | ||
<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. |
- | </note> | + | * L'option ''-w'' : pour indiquer le nombre de caractère par ligne |
- | ===Options utiles === | + | |
- | * -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 | ||
- | # Retour : | + | </code> |
+ | <code> | ||
chez debian-facile | chez debian-facile | ||
c'est facile | c'est facile | ||
Ligne 75: | Ligne 80: | ||
encore facile ! | encore facile ! | ||
</code> | </code> | ||
+ | </note> | ||
+ | |||
===Combiner fmt et less pour encore plus de lisibilité === | ===Combiner fmt et less pour encore plus de lisibilité === | ||
<code user> | <code user> | ||
fmt -w 20 ~/Essai-text-processing/essai-fmt | less | fmt -w 20 ~/Essai-text-processing/essai-fmt | less | ||
- | # Retour : | + | </code> |
+ | <code> | ||
chez debian-facile | chez debian-facile | ||
c'est facile | c'est facile | ||
Ligne 89: | Ligne 97: | ||
encore facile ! | encore facile ! | ||
(END) | (END) | ||
- | |||
</code> | </code> | ||
* Voir [[doc:editeurs:less| la commande less]] | * Voir [[doc:editeurs:less| la commande less]] | ||
Ligne 110: | Ligne 117: | ||
less ~/Essai-text-processing/bashrc-bis | less ~/Essai-text-processing/bashrc-bis | ||
</code> | </code> | ||
- | Extrait du retour : | + | |
- | <code user> | + | <code> |
# ~/.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 121: | Ligne 128: | ||
*) return;; | *) return;; | ||
esac | esac | ||
- | [...] | + | </code> |
+ | >Premières lignes du retour. | ||
+ | |||
===Affichage numéroté === | ===Affichage numéroté === | ||
<code> | <code> | ||
nl ~/Essai-text-processing/bashrc-bis | nl ~/Essai-text-processing/bashrc-bis | ||
</code user> | </code user> | ||
- | Extrait du retour : | + | |
<code> | <code> | ||
1 # ~/.bashrc: executed by bash(1) for non-login shells. | 1 # ~/.bashrc: executed by bash(1) for non-login shells. | ||
Ligne 137: | Ligne 146: | ||
7 *) return;; | 7 *) return;; | ||
8 esac | 8 esac | ||
- | [...] | + | |
- | </code user> | + | </code> |
+ | |||
+ | >Premières lignes du retour | ||
===Pour encore plus de lisibilité === | ===Pour encore plus de lisibilité === | ||
Ligne 144: | Ligne 156: | ||
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> | ||
- | |||
- | Extrait du retour : | ||
- | |||
<code> | <code> | ||
1 # ~/.bashrc: executed by bash(1) for non-login shells. | 1 # ~/.bashrc: executed by bash(1) for non-login shells. | ||
Ligne 157: | Ligne 166: | ||
7 *) return;; | 7 *) return;; | ||
8 esac | 8 esac | ||
- | + | ||
- | [...] | + | |
</code> | </code> | ||
+ | |||
+ | >Premières lignes du retour | ||
<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 182: | Ligne 192: | ||
cat ~/Essai-text-processing/users | cat ~/Essai-text-processing/users | ||
</code> | </code> | ||
- | retour : | ||
<code> | <code> | ||
01 Toto | 01 Toto | ||
Ligne 193: | Ligne 202: | ||
</code> | </code> | ||
- | Retour : | ||
<code> | <code> | ||
toto@gmail.com 01 | toto@gmail.com 01 | ||
Ligne 205: | 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 219: | 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 248: | 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 261: | 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 292: | 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> | ||
- | Soit le fichier "~/Essai-text-processing/users.sort" | + | |
+ | ====Affichage de plusieurs fichiers avec sort ==== | ||
+ | |||
+ | * Comparaison avec la commande cat : | ||
<code user> | <code user> | ||
- | cat ~/Essai-text-processing/users.sort | + | cat sort1.txt |
- | # Retour | + | </code> |
- | 5 Papi | + | <code> |
- | 1 Toto | + | 5 1 Amandine |
- | 3 Lili | + | 1 7 Bruno |
- | 2 Titi | + | 3 2 Caroline |
- | 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 |
- | # Retour : | + | <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 |
- | # Retour: | + | |
- | tomate | + | |
- | fraise | + | |
- | abricot | + | |
- | ananas | + | |
- | kiwi | + | |
- | pomme | + | |
</code> | </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> | <code user> | ||
- | sort ~/Essai-text-processing/sort.abc | + | sort -o sort3.txt sort1.txt sort2.txt |
- | # Retour: | + | |
- | 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 |
- | # Retour : | + | </code> |
- | tomate:4 | + | <code> |
- | fraise:1 | + | 0 3 Fabrice |
- | abricot:2 | + | 0 4 Guillaume |
- | ananas:6 | + | 1 7 Bruno |
- | kiwi:5 | + | 2 5 Daniel |
- | pomme:3 | + | 2 6 Émilien |
+ | 3 2 Caroline | ||
+ | 5 1 Amandine | ||
</code> | </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> | <code user> | ||
- | sort -t':' -k 2n ~/Essai-text-processing/sort.abc | + | cat alpha-sort.txt |
- | fraise:1 | + | </code> |
- | abricot:2 | + | <code> |
- | pomme:3 | + | 1 2 Francine |
- | tomate:4 | + | 2 3 Édith |
- | kiwi:5 | + | 3 4 Géraldine |
- | ananas:6 | + | 4 5 Béatrice |
+ | 5 6 Christelle | ||
+ | 5 7 Dorothée | ||
+ | 6 8 Amanda | ||
</code> | </code> | ||
- | <note tip> | + | * Pour le trier avec sort par alphabétique : |
- | Les options très 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 | + | sort -k3d alpha-sort.txt |
- | # Retour: | + | |
- | tomate:x:c | + | |
- | fraise:1 | + | |
- | abricot:2 | + | |
- | ananas:x:b | + | |
- | kiwi:x:a | + | |
- | pomme:3 | + | |
</code> | </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> | <code user> | ||
- | sort -t':' -k 2n -k 3d ~/Essai-text-processing/sort.123abc | + | cat sort4.txt |
- | # Retour: | + | </code> |
- | kiwi:x:a | + | <code> |
- | ananas:x:b | + | daemon:x:1:1:daemon:/usr/sbin:/bin/sh |
- | tomate:x:c | + | root:x:0:0:root:/root:/bin/bash |
- | fraise:1 | + | man:x:6:12:man:/var/cache/man:/bin/sh |
- | abricot:2 | + | bin:x:2:2:bin:/bin:/bin/sh |
- | pomme:3 | + | 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> | ||
- | === concaténer et créer un fichier avec la résultat=== | + | |
+ | * 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> | ||
- | sort -t':' -k 2n -k 3d ~/Essai-text-processing/sort.123abc > ~/Essai-text-processing/sort.123abc.ok | + | sort -t':' -k 7d -k 3n sort4.txt |
</code> | </code> | ||
- | ===Vérifier === | + | > 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 user> | + | <code> |
- | cat ~/Essai-text-processing/sort.123abc.okkiwi:x:a | + | root:x:0:0:root:/root:/bin/bash |
- | # Retour : | + | daemon:x:1:1:daemon:/usr/sbin:/bin/sh |
- | ananas:x:b | + | bin:x:2:2:bin:/bin:/bin/sh |
- | tomate:x:c | + | sys:x:3:3:sys:/dev:/bin/sh |
- | fraise:1 | + | games:x:5:60:games:/usr/games:/bin/sh |
- | abricot:2 | + | man:x:6:12:man:/var/cache/man:/bin/sh |
- | pomme:3 | + | 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 424: | Ligne 469: | ||
<code user> | <code user> | ||
cat ~/Essai-text-processing/tr-essai | cat ~/Essai-text-processing/tr-essai | ||
- | # retour: | + | </code> |
+ | <code> | ||
Pierre Paul Jacques | Pierre Paul Jacques | ||
</code> | </code> | ||
Ligne 430: | Ligne 476: | ||
<code user> | <code user> | ||
tr P p < ~/Essai-text-processing/tr-essai | tr P p < ~/Essai-text-processing/tr-essai | ||
+ | </code> | ||
+ | <code> | ||
pierre paul Jacques | pierre paul Jacques | ||
</code> | </code> | ||
Ligne 435: | Ligne 483: | ||
<code user> | <code user> | ||
cat ~/Essai-text-processing/tr-essai | cat ~/Essai-text-processing/tr-essai | ||
- | # retour: | + | </code> |
+ | <code> | ||
Pierre Paul Jacques | Pierre Paul Jacques | ||
</code> | </code> | ||
Ligne 441: | Ligne 490: | ||
<code user> | <code user> | ||
tr P X < ~/Essai-text-processing/tr-essai | tr P X < ~/Essai-text-processing/tr-essai | ||
+ | </code> | ||
+ | <code> | ||
Xierre Xaul Jacques | Xierre Xaul Jacques | ||
</code> | </code> | ||
Ligne 446: | Ligne 497: | ||
<code user> | <code user> | ||
cat ~/Essai-text-processing/tr-essai | cat ~/Essai-text-processing/tr-essai | ||
- | # retour : | + | </code> |
+ | <code> | ||
Pierre Paul Jacques | Pierre Paul Jacques | ||
</code> | </code> | ||
Ligne 452: | 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 466: | 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 475: | 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 483: | 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 502: | 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 518: | 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 528: | 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 556: | 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 607: | 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 621: | 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 7 espaces en 1 tabulation | + | |
===Syntaxe === | ===Syntaxe === | ||
Ligne 644: | 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 652: | 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 662: | 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 7 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 688: | Ligne 764: | ||
</code> | </code> | ||
- | ===Convertion des tabulations en espaces=== | + | ====Convertion des tabulations en espaces==== |
<code user> | <code user> | ||
Ligne 698: | 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 |