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 | ||
doc:systeme:commandes:les-commandes-join-paste-split-et-nl [08/06/2014 08:24] Hypathie [La commande nl] |
doc:systeme:commandes:les-commandes-join-paste-split-et-nl [06/11/2015 17:57] (Version actuelle) paskal [D'autres commandes pour la gestion des fichiers-texte] |
||
---|---|---|---|
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>débutant avisé}} |
- | * 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>à-tester}} |
- | * Suivi : {{tag>en-chantier}} | + | * Création par [[user>Hypathie]] le 07/06/2014 |
- | * Création par **Hypathie** 07/06/2014 | + | * Testé par <...> le <...> |
- | * Testé par <...> le <...> 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 !)) |
- | * 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 | + | |
- | **Nota :** | ||
- | |||
- | Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | ||
===== Introduction ===== | ===== Introduction ===== | ||
- | *[[doc:systeme:commandes:le_debianiste_qui_papillonne#les-fichiers|Les autres commandes sur les fichiers]]\\ | ||
- | *[[doc:systeme:commandes:creer#trouver-un-fichier|Trouver un fichier]] | ||
- | *[[doc:systeme:expand|commande expand]] | ||
- | *[[doc:systeme:split|commande split]] | ||
+ | Pour les commandes principales de gestion des fichiers : | ||
+ | * [[doc:systeme:commandes:creer|Les commandes Linux de gestion des fichiers et répertoires]] | ||
+ | |||
+ | Nous allons aborder quelques commandes complémentaires permettant de : | ||
+ | |||
+ | * améliorer l'affichage : fmt ; nl | ||
+ | * combiner le contenu de fichiers : join ; paste | ||
+ | * transformer le contenu de fichiers : sort ; split ; tr ; uniq ; expand et unexpand | ||
+ | |||
+ | |||
+ | |||
+ | ===== la commande fmt===== | ||
+ | ===Syntaxe === | ||
+ | |||
+ | fmt [options] [fichier...] | ||
+ | | ||
+ | === Préparation=== | ||
+ | Création du fichier "~/Essai-text-processing/essai-fmt" | ||
+ | |||
+ | <code user> | ||
+ | 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 ! | ||
+ | > EOF | ||
+ | </code> | ||
+ | |||
+ | ===Affichage du contenu d'un fichier en respectant les mots === | ||
+ | |||
+ | * Affichage avec la commande ''cat'' | ||
+ | <code user> | ||
+ | cat ~/Essai-text-processing/essai-fmt | ||
+ | </code> | ||
+ | <file config retour de la commande> | ||
+ | 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 ! | ||
+ | </file> | ||
+ | |||
+ | >L'affichage avec la commande ''cat'' peut être difficile à lire. | ||
+ | |||
+ | * Affichage avec la commande ''fmt'' : | ||
+ | <code user> | ||
+ | fmt ~/Essai-text-processing/essai-fmt | ||
+ | </code> | ||
+ | <file config retour de la commande> | ||
+ | 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 ! | ||
+ | </file> | ||
+ | <note> | ||
+ | * 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 | ||
+ | <code user> | ||
+ | fmt -w 20 ~/Essai-text-processing/essai-fmt | ||
+ | </code> | ||
+ | <file config retour de la commande> | ||
+ | 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 ! | ||
+ | </file> | ||
+ | </note> | ||
+ | |||
+ | ===Combiner fmt et less pour encore plus de lisibilité === | ||
+ | <code user> | ||
+ | fmt -w 20 ~/Essai-text-processing/essai-fmt | less | ||
+ | </code> | ||
+ | <file config retour de la commande> | ||
+ | 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 ! | ||
+ | (END) | ||
+ | </file> | ||
+ | * Voir [[doc:editeurs:less| la commande less]] | ||
+ | |||
+ | =====La commande nl ===== | ||
+ | Permet de numéroter l'affichage d'un fichier. | ||
+ | |||
+ | ===Syntaxe === | ||
+ | |||
+ | nl [options] [fichier...] | ||
+ | |||
+ | ===Préparation === | ||
+ | * copie du fichier ~/.bashrc et visualisation : | ||
+ | |||
+ | <code user> | ||
+ | cat ~/.bashrc >> ~/Essai-text-processing/bashrc-bis | ||
+ | </code> | ||
+ | * comparons avec l'affichage de less | ||
+ | <code user> | ||
+ | less ~/Essai-text-processing/bashrc-bis | ||
+ | </code> | ||
+ | |||
+ | <file config retour de la commande> | ||
+ | # ~/.bashrc: executed by bash(1) for non-login shells. | ||
+ | # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) | ||
+ | # for examples | ||
+ | |||
+ | # If not running interactively, don't do anything | ||
+ | case $- in | ||
+ | *i*) ;; | ||
+ | *) return;; | ||
+ | esac | ||
+ | </file> | ||
+ | >Premières lignes du retour. | ||
+ | |||
+ | ===Affichage numéroté === | ||
+ | <code user> | ||
+ | nl ~/Essai-text-processing/bashrc-bis | ||
+ | </code> | ||
+ | |||
+ | <file config retour de la commande> | ||
+ | 1 # ~/.bashrc: executed by bash(1) for non-login shells. | ||
+ | 2 # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) | ||
+ | 3 # for examples | ||
+ | |||
+ | 4 # If not running interactively, don't do anything | ||
+ | 5 case $- in | ||
+ | 6 *i*) ;; | ||
+ | 7 *) return;; | ||
+ | 8 esac | ||
+ | </file> | ||
+ | |||
+ | >Premières lignes du retour | ||
+ | |||
+ | ===Pour encore plus de lisibilité === | ||
+ | |||
+ | <code user> | ||
+ | fmt -w 65 ~/Essai-text-processing/bashrc-bis | nl ~/Essai-text-processing/bashrc-bis | less | ||
+ | </code> | ||
+ | <file config retour de la commande> | ||
+ | 1 # ~/.bashrc: executed by bash(1) for non-login shells. | ||
+ | 2 # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) | ||
+ | 3 # for examples | ||
+ | |||
+ | 4 # If not running interactively, don't do anything | ||
+ | 5 case $- in | ||
+ | 6 *i*) ;; | ||
+ | 7 *) return;; | ||
+ | 8 esac | ||
+ | |||
+ | </file> | ||
+ | |||
+ | >Premières lignes du retour | ||
+ | |||
+ | <note> | ||
+ | Par défaut la commande nl numérote les lignes non-vides. | ||
+ | * Quelques options :\\ | ||
+ | - -b : numérotation des lignes vides | ||
+ | - -b -t[expression régulière] : affiche tout mais numérote les lignes qui correspondent à l'expression régulière | ||
+ | - -n ln : affichage avec numérotation tout à droit. | ||
+ | - -n rn : affichage par défaut, c'est-à-dire avec une tabulation à droite avec le chiffre de la numérotation. | ||
+ | - -n rz : affichage de zéro entre le bord droit et le chiffre de numérotation | ||
+ | * voir man nl pour plus de meilleures explications. | ||
+ | </note> | ||
=====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 31: | Ligne 189: | ||
cat ~/Essai-text-processing/users | cat ~/Essai-text-processing/users | ||
</code> | </code> | ||
- | retour : | + | <file config retour de la commande> |
- | <code> | + | |
01 Toto | 01 Toto | ||
02 Titi | 02 Titi | ||
03 Lili | 03 Lili | ||
- | </code> | + | </file> |
<code user> | <code user> | ||
Ligne 42: | Ligne 199: | ||
</code> | </code> | ||
- | Retour : | + | <file config retour de la commande> |
- | <code> | + | |
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> | ||
- | * option -1 : donne le n° de colonne du champ commun, pour le premier document | + | <file config retour de la commande> |
- | * 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> | + | |
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 : | ||
+ | * 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 | ||
</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 97: | Ligne 255: | ||
<code user> | <code user> | ||
cat ~/Essai-text-processing/users | cat ~/Essai-text-processing/users | ||
- | # retour : | + | </code> |
+ | <file config retour de la commande> | ||
01 Toto | 01 Toto | ||
02 Titi | 02 Titi | ||
03 Lili | 03 Lili | ||
+ | </file> | ||
+ | <code user> | ||
cat ~/Essai-text-processing/infos-users | cat ~/Essai-text-processing/infos-users | ||
- | #retour : | + | </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> |
===Regroupement des lignes des deux fichiers === | ===Regroupement des lignes des deux fichiers === | ||
- | Retour: | ||
<code user> | <code user> | ||
Ligne 116: | Ligne 276: | ||
</code> | </code> | ||
- | Retour : | + | <file config retour de la commande> |
- | + | ||
- | <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> | + | </file> |
===Concaténation du retour dans un fichier "paste-users-infos" qui sera créé=== | ===Concaténation du retour dans un fichier "paste-users-infos" qui sera créé=== | ||
Ligne 130: | Ligne 288: | ||
=== Vérification === | === Vérification === | ||
- | <code user> | + | <file config retour de la commande> |
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> | + | </file> |
- | ===== sort ===== | ||
- | ===Syntaxe=== | ||
- | |||
- | sort [options [+POS1] [-POS2]] [fichier...] | ||
- | |||
- | ===Préparation=== | ||
- | |||
- | Soit le fichier "~/Essai-text-processing/users.sort" | ||
- | <code user> | ||
- | cat ~/Essai-text-processing/users.sort | ||
- | # Retour | ||
- | 5 Papi | ||
- | 1 Toto | ||
- | 3 Lili | ||
- | 2 Titi | ||
- | 4 Mami | ||
- | 003 Zaza | ||
- | 01 Nani | ||
- | </code> | ||
- | === tri par défaut=== | ||
- | <code user> | ||
- | sort ~/Essai-text-processing/users.sort | ||
- | # Retour : | ||
- | 003 Zaza | ||
- | 01 Nani | ||
- | 1 Toto | ||
- | 2 Titi | ||
- | 3 Lili | ||
- | 4 Mami | ||
- | 5 Papi | ||
- | </code> | ||
- | |||
- | ===Tri alphabétique d'une simple colonne=== | ||
- | |||
- | <code user> | ||
- | cat ~/Essai-text-processing/sort.abc | ||
- | # Retour: | ||
- | tomate | ||
- | fraise | ||
- | abricot | ||
- | ananas | ||
- | kiwi | ||
- | pomme | ||
- | </code> | ||
- | |||
- | <code user> | ||
- | sort ~/Essai-text-processing/sort.abc | ||
- | # Retour: | ||
- | abricot | ||
- | ananas | ||
- | fraise | ||
- | kiwi | ||
- | pomme | ||
- | tomate | ||
- | </code> | ||
- | |||
- | ===Tri avec choix de colonne === | ||
- | <code user> | ||
- | cat ~/Essai-text-processing/sort.abc | ||
- | # Retour : | ||
- | tomate:4 | ||
- | fraise:1 | ||
- | abricot:2 | ||
- | ananas:6 | ||
- | kiwi:5 | ||
- | pomme:3 | ||
- | </code> | ||
- | |||
- | <code user> | ||
- | sort -t':' -k 2n ~/Essai-text-processing/sort.abc | ||
- | fraise:1 | ||
- | abricot:2 | ||
- | pomme:3 | ||
- | tomate:4 | ||
- | kiwi:5 | ||
- | ananas:6 | ||
- | </code> | ||
- | |||
- | <note tip> | ||
- | 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> | ||
- | cat ~/Essai-text-processing/sort.123abc | ||
- | # Retour: | ||
- | tomate:x:c | ||
- | fraise:1 | ||
- | abricot:2 | ||
- | ananas:x:b | ||
- | kiwi:x:a | ||
- | pomme:3 | ||
- | </code> | ||
- | |||
- | <code user> | ||
- | sort -t':' -k 2n -k 3d ~/Essai-text-processing/sort.123abc | ||
- | # Retour: | ||
- | kiwi:x:a | ||
- | ananas:x:b | ||
- | tomate:x:c | ||
- | fraise:1 | ||
- | abricot:2 | ||
- | pomme:3 | ||
- | </code> | ||
- | |||
- | === concaténer et créer un fichier avec la résultat=== | ||
- | <code user> | ||
- | sort -t':' -k 2n -k 3d ~/Essai-text-processing/sort.123abc > ~/Essai-text-processing/sort.123abc.ok | ||
- | </code> | ||
- | |||
- | ===Vérifier === | ||
- | |||
- | <code user> | ||
- | cat ~/Essai-text-processing/sort.123abc.okkiwi:x:a | ||
- | # Retour : | ||
- | ananas:x:b | ||
- | tomate:x:c | ||
- | fraise:1 | ||
- | abricot:2 | ||
- | pomme:3 | ||
- | </code> | ||
=====la commande tr ===== | =====la commande tr ===== | ||
Ligne 273: | Ligne 304: | ||
<code user> | <code user> | ||
cat ~/Essai-text-processing/tr-essai | cat ~/Essai-text-processing/tr-essai | ||
- | # retour: | + | </code> |
+ | <file config retour de la commande> | ||
Pierre Paul Jacques | Pierre Paul Jacques | ||
- | </code> | + | </file> |
<code user> | <code user> | ||
tr P p < ~/Essai-text-processing/tr-essai | tr P p < ~/Essai-text-processing/tr-essai | ||
- | pierre paul Jacques | ||
</code> | </code> | ||
+ | <file config retour de la commande> | ||
+ | pierre paul Jacques | ||
+ | </file> | ||
<code user> | <code user> | ||
cat ~/Essai-text-processing/tr-essai | cat ~/Essai-text-processing/tr-essai | ||
- | # retour: | ||
- | Pierre Paul Jacques | ||
</code> | </code> | ||
+ | <file config retour de la commande> | ||
+ | Pierre Paul Jacques | ||
+ | </file> | ||
<code user> | <code user> | ||
tr P X < ~/Essai-text-processing/tr-essai | tr P X < ~/Essai-text-processing/tr-essai | ||
- | Xierre Xaul Jacques | ||
</code> | </code> | ||
+ | <file config retour de la commande> | ||
+ | Xierre Xaul Jacques | ||
+ | </file> | ||
<code user> | <code user> | ||
cat ~/Essai-text-processing/tr-essai | cat ~/Essai-text-processing/tr-essai | ||
- | # retour : | ||
- | Pierre Paul Jacques | ||
</code> | </code> | ||
+ | <file config retour de la commande> | ||
+ | Pierre Paul Jacques | ||
+ | </file> | ||
<code user> | <code user> | ||
tr PJ pj < ~/Essai-text-processing/tr-essai | tr PJ pj < ~/Essai-text-processing/tr-essai | ||
- | pierre paul jacques | ||
</code> | </code> | ||
+ | <file config retour de la commande> | ||
+ | pierre paul jacques | ||
+ | </file> | ||
Ligne 315: | Ligne 355: | ||
<code user> | <code user> | ||
cat ~/Essai-text-processing/users-uniq | cat ~/Essai-text-processing/users-uniq | ||
- | # Retour: | + | </code> |
+ | <file config retour de la commande> | ||
Papi | Papi | ||
1 Toto | 1 Toto | ||
Ligne 323: | Ligne 364: | ||
003 Zaza | 003 Zaza | ||
01 Nani | 01 Nani | ||
- | </code> | + | </file> |
- | ===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 332: | Ligne 373: | ||
<code user> | <code user> | ||
cat ~/Essai-text-processing/users-uniq | cat ~/Essai-text-processing/users-uniq | ||
- | # Retour: | + | </code> |
+ | <file config retour de la commande> | ||
5 Papi | 5 Papi | ||
1 Toto | 1 Toto | ||
Ligne 341: | Ligne 383: | ||
01 Nani | 01 Nani | ||
01 Nani | 01 Nani | ||
- | </code> | + | </file> |
<note> | <note> | ||
Il faut que les doublons soient consécutifs, et que le fichier soit "trié" | Il faut que les doublons soient consécutifs, et que le fichier soit "trié" | ||
Ligne 351: | Ligne 393: | ||
<code user> | <code user> | ||
cat ~/Essai-text-processing/users-sort-uniq | cat ~/Essai-text-processing/users-sort-uniq | ||
- | # Retour : | + | </code> |
+ | <file config retour de la commande> | ||
003 Zaza | 003 Zaza | ||
01 Nani | 01 Nani | ||
Ligne 359: | Ligne 402: | ||
4 Mami | 4 Mami | ||
5 Papi | 5 Papi | ||
- | </code> | + | </file> |
=====La commande split ===== | =====La commande split ===== | ||
Ligne 367: | Ligne 410: | ||
===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 377: | Ligne 420: | ||
</code> | </code> | ||
- | Vérification : | + | * Vérification : |
<code user> | <code user> | ||
cat ~/Essai-text-processing/liste-fruits | cat ~/Essai-text-processing/liste-fruits | ||
- | # Retour: | + | </code> |
+ | <file config retour de la commande> | ||
1 fraise | 1 fraise | ||
2 abricot | 2 abricot | ||
3 pomme | 3 pomme | ||
- | </code> | + | </file> |
- | ===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 405: | Ligne 449: | ||
</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 | ||
- | fruit1baa | ||
</code> | </code> | ||
+ | <file config retour de la commande> | ||
+ | fruit1baa | ||
+ | </file> | ||
- | Un seul fichier a été créé : | + | >Un seul fichier a été créé. |
+ | |||
<code user> | <code user> | ||
cat fruit1b* | cat fruit1b* | ||
- | # Retour : | + | </code> |
+ | <file config retour de la commande> | ||
1 fraise | 1 fraise | ||
2 abricot | 2 abricot | ||
3 pomme | 3 pomme | ||
- | </code> | + | </file> |
- | 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 user> | ||
ls ~/Essai-text-processing/fruit1b* | ls ~/Essai-text-processing/fruit1b* | ||
- | # Retour: | ||
- | /home/hypathie/Essai-text-processing/fruit1baa | ||
</code> | </code> | ||
- | Ou | + | <file config retour de la commande> |
+ | /home/hypathie/Essai-text-processing/fruit1baa | ||
+ | </file> | ||
+ | * 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* | ||
- | fruit1baa | ||
</code> | </code> | ||
+ | <file config retour de la commande> | ||
+ | fruit1baa | ||
+ | </file> | ||
- | ===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 456: | Ligne 512: | ||
<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> |
+ | <file config retour de la commande> | ||
xaa xab xac | xaa xab xac | ||
- | # puis: | + | </file> |
+ | <code user> | ||
cat x* | cat x* | ||
- | # Retour : | + | </code> |
+ | <file config retour de la commande> | ||
1 fraise | 1 fraise | ||
2 abricot | 2 abricot | ||
3 pomme | 3 pomme | ||
- | </code> | + | </file> |
+ | |||
+ | =====La commande unexpand ===== | ||
+ | La commande "unexpand" peut servir à convertir un groupe de sept espaces en une tabulation. | ||
- | ===== la commande fmt===== | ||
===Syntaxe === | ===Syntaxe === | ||
- | fmt [options] [fichier...] | + | unexpand [-a] [fichier...] |
- | + | ||
- | === préparation=== | + | |
- | Création du fichier "~/Essai-text-processing/essai-fmt" | + | |
+ | === Préparation=== | ||
+ | * 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> | <code user> | ||
- | cat > ~/Essai-text-processing/essai-fmt <<EOF | + | cat > ~/Essai-text-processing/users-infos-espaces<<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 ! | + | > 01 Toto toto@gmx.fr modo |
+ | > 02 Titi titi@gmail.com membre | ||
+ | > 03 Lili lili@hotmail.com membre | ||
> EOF | > EOF | ||
</code> | </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> | ||
+ | ====Convertir des espaces en tabulation ==== | ||
+ | ===Affichage avec cat : ce sont des espaces === | ||
+ | <code user> | ||
+ | cat ~/Essai-text-processing/users-infos-espaces</code> | ||
+ | <file config retour de la commande> | ||
+ | 01 Toto toto@gmx.fr modo | ||
+ | 02 Titi titi@gmail.com membre | ||
+ | 03 Lili lili@hotmail.com membre</file> | ||
- | ===Affichage du contenu d'un fichier en respectant les mots === | + | ===Conversion des espaces en tabulation === |
- | * L'affichage avec la commande "cat" est parfois difficile à lire: | + | |
<code user> | <code user> | ||
- | cat ~/Essai-text-processing/essai-fmt | + | unexpand -a ~/Essai-text-processing/users-infos-espaces |
- | # Retour : | + | |
- | 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 ! | + | |
</code> | </code> | ||
+ | <file config retour de la commande> | ||
+ | 01 Toto toto@gmx.fr modo | ||
+ | 02 Titi titi@gmail.com membre | ||
+ | 03 Lili lili@hotmail.com membre | ||
- | * Affichage avec la commande "fmt" : | + | </file> |
- | <code user> | + | |
- | fmt ~/Essai-text-processing/essai-fmt | + | |
- | # Retour : | + | |
- | 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 ! | + | |
- | </code> | + | |
<note> | <note> | ||
- | Par défaut, la commande "fmt" affiche le contenu d'un fichier par ligne de 75 caractères maximum. | + | * Option ''-a'' pour que la conversion des espaces ait lieu partout et pas seulement pour les espaces constituant la première colonne de droite. |
+ | * Les groupes de moins de sept espaces consécutifs n'ont pas été convertis en tabulation. | ||
</note> | </note> | ||
- | ===Options utiles === | + | =====La commande "expand" ===== |
- | * -w : pour indiquer le nombre de caractère par ligne | + | La commande "expand" peut servir à convertir les tabulations en espaces. |
- | <code user> | + | |
- | fmt -w 20 ~/Essai-text-processing/essai-fmt | + | |
- | # Retour : | + | |
- | 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 ! | + | |
- | </code> | + | |
- | ===Combiner fmt et less pour encore plus de lisibilité === | + | |
- | <code user> | + | |
- | fmt -w 20 ~/Essai-text-processing/essai-fmt | less | + | |
- | # Retour : | + | |
- | 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 ! | + | |
- | (END) | + | |
- | + | ||
- | </code> | + | |
- | * Voir [[doc:editeurs:less| la commande less]] | + | |
- | <code user> | + | |
- | + | ||
- | + | ||
- | =====La commande nl ===== | + | |
- | Permet de numéroter l'affichage d'un fichier. | + | |
===Syntaxe === | ===Syntaxe === | ||
- | nl [options] [fichier...] | + | expand [-t numero] [fichier...] |
===Préparation === | ===Préparation === | ||
- | * copie du fichier ~/.bashrc et visualisation : | + | Soit le fichier "~/Essai-text-processing/users-infos-tabul" contenant des tabulations |
<code user> | <code user> | ||
- | cat ~/.bashrc >> ~/Essai-text-processing/bashrc-bis | + | unexpand -a ~/Essai-text-processing/users-infos-espaces > ~/Essai-text-processing/users-infos-tabul |
</code> | </code> | ||
- | * comparons avec l'affichage de less | + | |
+ | === Visualisation=== | ||
<code user> | <code user> | ||
- | less ~/Essai-text-processing/bashrc-bis | + | cat ~/Essai-text-processing/users-infos-tabul</code> |
- | </code> | + | <file config retour de la commande> |
- | Extrait du retour : | + | 01 Toto toto@gmx.fr modo |
- | <code user> | + | 02 Titi titi@gmail.com membre |
- | # ~/.bashrc: executed by bash(1) for non-login shells. | + | 03 Lili lili@hotmail.com membre |
- | # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) | + | |
- | # for examples | + | |
- | # If not running interactively, don't do anything | + | </file> |
- | case $- in | + | ====Convertion des tabulations en espaces==== |
- | *i*) ;; | + | |
- | *) return;; | + | |
- | esac | + | |
- | [...] | + | |
- | ===Affichage numéroté === | + | |
- | <code> | + | |
- | nl ~/Essai-text-processing/bashrc-bis | + | |
- | </code user> | + | |
- | Extrait du retour : | + | |
- | <code> | + | |
- | 1 # ~/.bashrc: executed by bash(1) for non-login shells. | + | |
- | 2 # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) | + | |
- | 3 # for examples | + | |
- | + | ||
- | 4 # If not running interactively, don't do anything | + | |
- | 5 case $- in | + | |
- | 6 *i*) ;; | + | |
- | 7 *) return;; | + | |
- | 8 esac | + | |
- | [...] | + | |
- | </code user> | + | |
- | ===Pour encore plus de lisibilité === | + | |
<code user> | <code user> | ||
- | fmt -w 65 ~/Essai-text-processing/bashrc-bis | nl ~/Essai-text-processing/bashrc-bis | less | + | expand ~/Essai-text-processing/users-infos-tabul</code> |
- | </code> | + | <file config retour de la commande> |
+ | 01 Toto toto@gmx.fr modo | ||
+ | 02 Titi titi@gmail.com membre | ||
+ | 03 Lili lili@hotmail.com membre | ||
- | Extrait du retour : | + | </file> |
+ | ==== Déterminer le nombre d'espaces qui remplaceront chaque tabulation==== | ||
+ | * option ''-t'' nombre | ||
+ | <code user> | ||
+ | expand -t 1 ~/Essai-text-processing/users-infos-tabul</code> | ||
+ | <file config retour de la commande> | ||
+ | 01 Toto toto@gmx.fr modo | ||
+ | 02 Titi titi@gmail.com membre | ||
+ | 03 Lili lili@hotmail.com membre | ||
+ | </file> | ||
+ | |||
+ | ====Aller plus loin avec les commandes expand et unexpand ==== | ||
+ | Voir : [[doc:systeme:expand |expand]] | ||
- | <code> | ||
- | 1 # ~/.bashrc: executed by bash(1) for non-login shells. | ||
- | 2 # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) | ||
- | 3 # for examples | ||
- | |||
- | 4 # If not running interactively, don't do anything | ||
- | 5 case $- in | ||
- | 6 *i*) ;; | ||
- | 7 *) return;; | ||
- | 8 esac | ||
- | |||
- | [...] | ||
- | </code> |