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 [10/07/2014 09:28] Hypathie [la commande tr] |
doc:systeme:commandes:les-commandes-join-paste-split-et-nl [27/05/2015 15:21] captnfab [La commande join] |
||
---|---|---|---|
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 36: | Ligne 36: | ||
<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> | ||
Ligne 131: | Ligne 132: | ||
===Affichage numéroté === | ===Affichage numéroté === | ||
- | <code> | + | <code user> |
nl ~/Essai-text-processing/bashrc-bis | nl ~/Essai-text-processing/bashrc-bis | ||
- | </code user> | + | </code> |
<code> | <code> | ||
- | 1 # ~/.bashrc: executed by bash(1) for non-login shells. | + | 1 # ~/.bashrc: executed by bash(1) for non-login shells. |
- | 2 # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) | + | 2 # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) |
- | 3 # for examples | + | 3 # for examples |
- | | + | |
- | 4 # If not running interactively, don't do anything | + | 4 # If not running interactively, don't do anything |
- | 5 case $- in | + | 5 case $- in |
- | 6 *i*) ;; | + | 6 *i*) ;; |
- | 7 *) return;; | + | 7 *) return;; |
- | 8 esac | + | 8 esac |
</code> | </code> | ||
Ligne 171: | Ligne 171: | ||
<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 182: | ||
=====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 209: | Ligne 209: | ||
===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> | ||
Ligne 295: | Ligne 295: | ||
</code> | </code> | ||
- | ===== 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 | ||
- | </code> | ||
- | <code> | ||
- | 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 | ||
- | </code> | ||
- | <code> | ||
- | 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 | ||
- | </code> | ||
- | <code> | ||
- | tomate | ||
- | fraise | ||
- | abricot | ||
- | ananas | ||
- | kiwi | ||
- | pomme | ||
- | </code> | ||
- | |||
- | <code user> | ||
- | sort ~/Essai-text-processing/sort.abc | ||
- | </code> | ||
- | <code> | ||
- | abricot | ||
- | ananas | ||
- | fraise | ||
- | kiwi | ||
- | pomme | ||
- | tomate | ||
- | </code> | ||
- | |||
- | ===Tri avec choix de colonne === | ||
- | <code user> | ||
- | cat ~/Essai-text-processing/sort.abc | ||
- | </code> | ||
- | <code> | ||
- | 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 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 | ||
- | </code> | ||
- | <code> | ||
- | 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 | ||
- | </code> | ||
- | <code> | ||
- | 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 | ||
- | </code> | ||
- | <code> | ||
- | ananas:x:b | ||
- | tomate:x:c | ||
- | fraise:1 | ||
- | abricot:2 | ||
- | pomme:3 | ||
- | </code> | ||
=====la commande tr ===== | =====la commande tr ===== | ||
Ligne 461: | Ligne 326: | ||
<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 473: | Ligne 340: | ||
<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 487: | Ligne 356: | ||
<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 496: | Ligne 366: | ||
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 504: | Ligne 374: | ||
<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 523: | Ligne 394: | ||
<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 539: | Ligne 411: | ||
===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 549: | Ligne 421: | ||
</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 577: | Ligne 450: | ||
</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 628: | Ligne 513: | ||
<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 642: | Ligne 532: | ||
</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 665: | Ligne 554: | ||
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 673: | Ligne 563: | ||
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 683: | Ligne 574: | ||
</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 709: | Ligne 600: | ||
</code> | </code> | ||
- | ===Convertion des tabulations en espaces=== | + | ====Convertion des tabulations en espaces==== |
<code user> | <code user> | ||
Ligne 719: | Ligne 610: | ||
</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 |