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 08:59] Hypathie [Les commandes expand et unexpand] |
doc:systeme:commandes:les-commandes-join-paste-split-et-nl [10/07/2014 09:25] Hypathie [sort] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Les commandes : d'autres commandes pour la gestion des fichiers-texte ====== | + | ====== D'autres commandes pour la gestion des fichiers-texte ====== |
* 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>débutant }} | + | * Niveau requis : {{tag>grand-débutant }} |
- | * Commentaires : //Contexte d'utilisation du sujet du tuto. // FIXME | + | |
* 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>en-chantier}} | + | * 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 !)) FIXME | + | * 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 ! | ||
===== Introduction ===== | ===== Introduction ===== | ||
+ | |||
+ | Pour les commandes principales de gestion des fichiers : | ||
* [[doc:systeme:commandes:creer|Les commandes Linux de gestion des fichiers et répertoires]] | * [[doc:systeme:commandes:creer|Les commandes Linux de gestion des fichiers et répertoires]] | ||
- | * [[doc:systeme:expand|commande expand]] | + | |
+ | Nous allons aborder quelques commandes complémentaires permettant de : | ||
+ | |||
+ | * améliorer l'affichage : fnt ; nl | ||
+ | * combiner le contenu de fichiers : join ; paste | ||
+ | * transformer le contenu de fichier : sort ; split ; tr ; uniq ; expand et unexpand | ||
Ligne 24: | 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" | ||
Ligne 34: | Ligne 41: | ||
===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 51: | Ligne 63: | ||
</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 68: | Ligne 79: | ||
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 82: | Ligne 96: | ||
encore facile ! | encore facile ! | ||
(END) | (END) | ||
- | |||
</code> | </code> | ||
* Voir [[doc:editeurs:less| la commande less]] | * Voir [[doc:editeurs:less| la commande less]] | ||
Ligne 103: | Ligne 116: | ||
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 114: | Ligne 127: | ||
*) 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 130: | Ligne 145: | ||
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 137: | Ligne 155: | ||
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 150: | Ligne 165: | ||
7 *) return;; | 7 *) return;; | ||
8 esac | 8 esac | ||
- | + | ||
- | [...] | + | |
</code> | </code> | ||
+ | |||
+ | >Premières lignes du retour | ||
<note> | <note> | ||
Ligne 175: | Ligne 191: | ||
cat ~/Essai-text-processing/users | cat ~/Essai-text-processing/users | ||
</code> | </code> | ||
- | retour : | ||
<code> | <code> | ||
01 Toto | 01 Toto | ||
Ligne 186: | Ligne 201: | ||
</code> | </code> | ||
- | Retour : | ||
<code> | <code> | ||
toto@gmail.com 01 | toto@gmail.com 01 | ||
Ligne 198: | Ligne 212: | ||
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 212: | Ligne 217: | ||
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 241: | Ligne 256: | ||
<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 254: | Ligne 272: | ||
===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 290: | Ligne 305: | ||
<code user> | <code user> | ||
cat ~/Essai-text-processing/users.sort | cat ~/Essai-text-processing/users.sort | ||
- | # Retour | + | </code> |
+ | <code> | ||
5 Papi | 5 Papi | ||
1 Toto | 1 Toto | ||
Ligne 299: | Ligne 315: | ||
01 Nani | 01 Nani | ||
</code> | </code> | ||
- | === tri par défaut=== | + | === Tri par défaut=== |
<code user> | <code user> | ||
sort ~/Essai-text-processing/users.sort | sort ~/Essai-text-processing/users.sort | ||
- | # Retour : | + | </code> |
+ | <code> | ||
003 Zaza | 003 Zaza | ||
01 Nani | 01 Nani | ||
Ligne 316: | Ligne 333: | ||
<code user> | <code user> | ||
cat ~/Essai-text-processing/sort.abc | cat ~/Essai-text-processing/sort.abc | ||
- | # Retour: | + | </code> |
+ | <code> | ||
tomate | tomate | ||
fraise | fraise | ||
Ligne 327: | Ligne 345: | ||
<code user> | <code user> | ||
sort ~/Essai-text-processing/sort.abc | sort ~/Essai-text-processing/sort.abc | ||
- | # Retour: | + | </code> |
+ | <code> | ||
abricot | abricot | ||
ananas | ananas | ||
Ligne 339: | Ligne 358: | ||
<code user> | <code user> | ||
cat ~/Essai-text-processing/sort.abc | cat ~/Essai-text-processing/sort.abc | ||
- | # Retour : | + | </code> |
+ | <code> | ||
tomate:4 | tomate:4 | ||
fraise:1 | fraise:1 | ||
Ligne 359: | Ligne 379: | ||
<note tip> | <note tip> | ||
- | Les options très utiles: | + | 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) | + | * ''-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 | + | * ''-k'' : pour spécifier la colonne |
- | * -2 : n° de colonne | + | * ''-2'' : n° de colonne |
- | * -n : pour spécifier qu'il s'agit d'un tri numérique | + | * ''-n'' : pour spécifier qu'il s'agit d'un tri numérique |
- | * -d : pour tri dictionnaire | + | * ''-d'' : pour tri dictionnaire |
- | * -r : pour un tri inverse (-rn ou -rd) | + | * ''-r'' : pour un tri inverse (-rn ou -rd) |
- | * -M : ordre chronologique | + | * ''-M'' : ordre chronologique |
</note> | </note> | ||
===Tri selon plusieurs colonnes === | ===Tri selon plusieurs colonnes === | ||
<code user> | <code user> | ||
cat ~/Essai-text-processing/sort.123abc | cat ~/Essai-text-processing/sort.123abc | ||
- | # Retour: | + | </code> |
+ | <code> | ||
tomate:x:c | tomate:x:c | ||
fraise:1 | fraise:1 | ||
Ligne 382: | Ligne 403: | ||
<code user> | <code user> | ||
sort -t':' -k 2n -k 3d ~/Essai-text-processing/sort.123abc | sort -t':' -k 2n -k 3d ~/Essai-text-processing/sort.123abc | ||
- | # Retour: | + | </code> |
+ | <code> | ||
kiwi:x:a | kiwi:x:a | ||
ananas:x:b | ananas:x:b | ||
Ligne 391: | Ligne 413: | ||
</code> | </code> | ||
- | === concaténer et créer un fichier avec la résultat=== | + | === Concaténer et créer un fichier avec la résultat=== |
<code user> | <code user> | ||
sort -t':' -k 2n -k 3d ~/Essai-text-processing/sort.123abc > ~/Essai-text-processing/sort.123abc.ok | sort -t':' -k 2n -k 3d ~/Essai-text-processing/sort.123abc > ~/Essai-text-processing/sort.123abc.ok | ||
Ligne 400: | Ligne 422: | ||
<code user> | <code user> | ||
cat ~/Essai-text-processing/sort.123abc.okkiwi:x:a | cat ~/Essai-text-processing/sort.123abc.okkiwi:x:a | ||
- | # Retour : | + | </code> |
+ | <code> | ||
ananas:x:b | ananas:x:b | ||
tomate:x:c | tomate:x:c | ||
Ligne 615: | Ligne 638: | ||
=====Les commandes expand et unexpand ===== | =====Les commandes expand et unexpand ===== | ||
- | ====expand ==== | + | ====unexpand ==== |
- | La commande "expand" convertit les espaces en tabulations | + | La commande "unexpand" convertit les groupes de 7 espaces en 1 tabulation |
===Syntaxe === | ===Syntaxe === | ||
- | expand [t numero] [fichier...] | + | unexpand [-a] [fichier...] |
=== Préparation=== | === Préparation=== | ||
- | * Visualisation du fichier | + | * Création du fichier "~/Essai-text-processing/users-infos-espaces" |
+ | * Avec 7 ou plus espaces pour ligne 1 et 3 | ||
+ | * Avec moins de 7 espaces pour ligne 2 | ||
+ | <code user> | ||
+ | cat > ~/Essai-text-processing/users-infos-espaces<<EOF | ||
+ | > 01 Toto toto@gmx.fr modo | ||
+ | > 02 Titi titi@gmail.com membre | ||
+ | > 03 Lili lili@hotmail.com membre | ||
+ | > EOF | ||
+ | </code> | ||
+ | <note> | ||
+ | Ci-dessus ce sont plusieurs espaces qui sont insérés entre les chaînes de caractères. | ||
+ | Pour intégrer le contenu d'un fichier avec les redirections et EOF, la touche tabulation ne fonctionne pas. | ||
+ | </note> | ||
+ | ===Affichage avec cat : ce sont des espaces === | ||
+ | <code user> | ||
+ | cat ~/Essai-text-processing/users-infos-espaces | ||
+ | # Retour : | ||
+ | 01 Toto toto@gmx.fr modo | ||
+ | 02 Titi titi@gmail.com membre | ||
+ | 03 Lili lili@hotmail.com membre | ||
+ | </code> | ||
+ | ===conversion des espaces en tabulation === | ||
+ | <code user> | ||
+ | unexpand -a ~/Essai-text-processing/users-infos-espaces | ||
+ | # Retour: | ||
+ | 01 Toto toto@gmx.fr modo | ||
+ | 02 Titi titi@gmail.com membre | ||
+ | 03 Lili lili@hotmail.com membre | ||
- | ====unexpand ==== | + | </code> |
- | La commande "unexpand" convertit les tabulations en espaces | + | <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 | ||
+ | * Les groupes de moins de 7 espaces consécutifs n'ont pas été convertis en tabulation | ||
+ | </note | ||
+ | ====La commande "expand" ==== | ||
+ | La commande "expand" convertit les tabulations en espaces | ||
===Syntaxe === | ===Syntaxe === | ||
+ | |||
+ | expand [-t numero] [fichier...] | ||
+ | |||
+ | ===Préparation === | ||
+ | Soit le fichier "~/Essai-text-processing/users-infos-tabul" contenant des tabulations | ||
+ | <code user> | ||
+ | unexpand -a ~/Essai-text-processing/users-infos-espaces > ~/Essai-text-processing/users-infos-tabul | ||
+ | </code> | ||
+ | |||
+ | === Visualisation=== | ||
+ | |||
+ | <code user> | ||
+ | cat ~/Essai-text-processing/users-infos-tabul | ||
+ | # Retour : | ||
+ | 01 Toto toto@gmx.fr modo | ||
+ | 02 Titi titi@gmail.com membre | ||
+ | 03 Lili lili@hotmail.com membre | ||
+ | |||
+ | </code> | ||
+ | ===Convertion des tabulations en espaces=== | ||
+ | |||
+ | <code user> | ||
+ | expand ~/Essai-text-processing/users-infos-tabul | ||
+ | # Retour : | ||
+ | 01 Toto toto@gmx.fr modo | ||
+ | 02 Titi titi@gmail.com membre | ||
+ | 03 Lili lili@hotmail.com membre | ||
+ | |||
+ | </code> | ||
+ | === déterminer le nombre d'espaces qui remplaceront chaque tabulation=== | ||
+ | * option -t nombre | ||
+ | <code user> | ||
+ | expand -t 1 ~/Essai-text-processing/users-infos-tabul | ||
+ | # Retour : | ||
+ | 01 Toto toto@gmx.fr modo | ||
+ | 02 Titi titi@gmail.com membre | ||
+ | 03 Lili lili@hotmail.com membre | ||
+ | </code> | ||
+ | |||
+ | ====Aller plus loin avec les commandes expand et unexpand ==== | ||
+ | Voir : [[doc:systeme:expand |expand]] | ||