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 [03/07/2014 00:06] 127.0.0.1 modification externe |
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 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 | ||
+ | * **''-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> | ||
- | 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: | + | </code> |
- | tomate | + | <code> |
- | fraise | + | 0 3 Fabrice |
- | abricot | + | 0 4 Guillaume |
- | ananas | + | 1 7 Bruno |
- | kiwi | + | 2 5 Daniel |
- | pomme | + | 2 6 Émilien |
+ | 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 |
- | # 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 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 -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> | ||
+ | |||
+ | * 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> | ||
+ | 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 | ||
+ | |||
+ | ====Trier selon l'ordre numérique d'une colonne==== | ||
+ | * soit le fichier "sort.txt" : | ||
+ | |||
+ | <code user> | ||
+ | cat sort.txt | ||
+ | </code> | ||
+ | <code> | ||
+ | pomme 2 | ||
+ | fraise 6 | ||
+ | abricot 9 | ||
+ | kiwi 3 | ||
+ | </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 très 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 |
- | # Retour: | + | |
- | tomate:x:c | + | |
- | fraise:1 | + | |
- | abricot:2 | + | |
- | ananas:x:b | + | |
- | kiwi:x:a | + | |
- | pomme:3 | + | |
</code> | </code> | ||
+ | <code> | ||
+ | 10 fraise | ||
+ | pomme 6 | ||
+ | Titi grosminet | ||
+ | 25 8 | ||
+ | </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 |
- | # Retour: | + | |
- | kiwi:x:a | + | |
- | ananas:x:b | + | |
- | tomate:x:c | + | |
- | fraise:1 | + | |
- | abricot:2 | + | |
- | pomme:3 | + | |
</code> | </code> | ||
+ | <code> | ||
+ | 10 fraise | ||
+ | 25 8 | ||
+ | pomme 6 | ||
+ | Titi grosminet | ||
+ | </code> | ||
+ | |||
+ | * de même pour l'autre colonne : | ||
+ | <code> | ||
+ | sort -k2 xxx-sort.txt | ||
+ | </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 |
- | # Retour : | + | |
- | ananas:x:b | + | |
- | tomate:x:c | + | |
- | fraise:1 | + | |
- | abricot:2 | + | |
- | pomme:3 | + | |
</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> | ||
+ | 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> | ||
+ | |||
+ | |||
=====la commande tr ===== | =====la commande tr ===== | ||
Ligne 424: | Ligne 547: | ||
<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 554: | ||
<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 561: | ||
<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 568: | ||
<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 575: | ||
<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 582: | ||
<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 598: | ||
<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 608: | ||
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 616: | ||
<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 636: | ||
<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 653: | ||
===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 663: | ||
</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 692: | ||
</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 755: | ||
<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 774: | ||
</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 796: | ||
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 805: | ||
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 816: | ||
</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 842: | ||
</code> | </code> | ||
- | ===Convertion des tabulations en espaces=== | + | ====Convertion des tabulations en espaces==== |
<code user> | <code user> | ||
Ligne 698: | Ligne 852: | ||
</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 |