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 →
Ceci est une ancienne révision du document !
Nota : Voici des commandes très simples d'utilisation.
Contributeurs, les sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !
Pour les commandes principales de gestion des fichiers :
Nous allons aborder quelques commandes complémentaires permettant de :
fmt [options] [fichier...]
Création du fichier “~/Essai-text-processing/essai-fmt”
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
cat
cat ~/Essai-text-processing/essai-fmt
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 !
L'affichage avec la commandecat
peut être difficile à lire.
fmt
:fmt ~/Essai-text-processing/essai-fmt
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 !
fmt
affiche le contenu d'un fichier par ligne de 75 caractères maximum.-w
: pour indiquer le nombre de caractère par lignefmt -w 20 ~/Essai-text-processing/essai-fmt
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 !
fmt -w 20 ~/Essai-text-processing/essai-fmt | less
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)
Permet de numéroter l'affichage d'un fichier.
nl [options] [fichier...]
cat ~/.bashrc >> ~/Essai-text-processing/bashrc-bis
less ~/Essai-text-processing/bashrc-bis
# ~/.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
Premières lignes du retour.
nl ~/Essai-text-processing/bashrc-bis </code user> <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
Premières lignes du retour
fmt -w 65 ~/Essai-text-processing/bashrc-bis | nl ~/Essai-text-processing/bashrc-bis | less
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
Premières lignes du retour
join [options]... fichier1 fichier2
Soit deux fichiers : “users” et “infos-users”
cat ~/Essai-text-processing/users
01 Toto 02 Titi 03 Lili
cat ~/Essai-text-processing/infos-users
toto@gmail.com 01 titi@gmx.fr 02 lili@hotmail.com 03
join -1 1 -2 2 ~/Essai-text-processing/users ~/Essai-text-processing/infos-users
01 Toto toto@gmail.com 02 Titi titi@gmx.fr 03 Lili lili@hotmail.com
-1
: donne le n° de colonne du champ commun, pour le premier document-2
: n° de colonne du champ commun, pour le deuxième document-j
(option CHAMP) : équivalent à « -1 CHAMP -2 CHAMP »-i
: ignorer les différences de casse man join
pour plus d'options:
join -t':' -2 1 -2 2 fichier1 fichier2
join -1 1 -2 2 ~/Essai-text-processing/users ~/Essai-text-processing/infos-users > ~/Essai-text-processing/adr-users
cat ~/Essai-text-processing/adr-users
01 Toto toto@gmail.com 02 Titi titi@gmx.fr 03 Lili lili@hotmail.com
paste [options]... [fichier]...
La jointure se fait selon lignes à ligne, donc il faut des fichiers avec des lignes rangées dans le même ordre.
Visualisons les deux fichiers concernés, “users” et “infos-users”
cat ~/Essai-text-processing/users
01 Toto 02 Titi 03 Lili
cat ~/Essai-text-processing/infos-users
toto@gmail.com 01 titi@gmx.fr 02 lili@hotmail.com 03
paste ~/Essai-text-processing/users ~/Essai-text-processing/infos-users
01 Toto toto@gmail.com 01 02 Titi titi@gmx.fr 02 03 Lili lili@hotmail.com 03
paste ~/Essai-text-processing/users ~/Essai-text-processing/infos-users > ~/Essai-text-processing/paste-users-infos
01 Toto toto@gmail.com 01 02 Titi titi@gmx.fr 02 03 Lili lili@hotmail.com 03
sort [options [+POS1] [-POS2]] [fichier...]
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 majusculeVoir man sort pour les autres options.
cat sort1.txt
5 1 Amandine 1 7 Bruno 3 2 Caroline
cat sort2.txt <code>=== 2 5 Daniel 2 6 Émilien 0 3 Fabrice 0 4 Guillaume
Dans chacun de ses deux fichiers, les lignes ne sont pas rangées en fonction des colonnes
sort sort1.txt sort2.txt
0 3 Fabrice 0 4 Guillaume 1 7 Bruno 2 5 Daniel 2 6 Émilien 3 2 Caroline 5 1 Amandine
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.
sort -o sort3.txt sort1.txt sort2.txt
cat sort3.txt
0 3 Fabrice 0 4 Guillaume 1 7 Bruno 2 5 Daniel 2 6 Émilien 3 2 Caroline 5 1 Amandine
cat alpha-sort.txt
1 2 Francine 2 3 Édith 3 4 Géraldine 4 5 Béatrice 5 6 Christelle 5 7 Dorothée 6 8 Amanda
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.
sort -k3d alpha-sort.txt
6 8 Amanda 4 5 Béatrice 5 6 Christelle 2 3 Édith 5 7 Dorothée 1 2 Francine 3 4 Géraldine
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
cat sort.txt
pomme 2 fraise 6 abricot 9 kiwi 3
sort -k2n sort.txt
pomme 2 kiwi 3 fraise 6 abricot 9
sort sort.txt
Il aurait été inutile d'indiquer la colonne car la première colonne comporte des chaînes de caractères.
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.
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.
cat xxx-sort.txt
10 fraise pomme 6 Titi grosminet 25 8
sort xxx-sort.txt
10 fraise 25 8 pomme 6 Titi grosminet
sort -k2 xxx-sort.txt
pomme 6 25 8 10 fraise Titi grosminet
cat sort4.txt
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
sort -t':' -k 7d -k 3n sort4.txt
-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 7ième colonne type “dictionnaire”
3n
pour 3ième colonne type “numérique”
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
Elle permet de traduire, c'est-à-dire, changer des lettres
tr [options] ens1 ens2
cat ~/Essai-text-processing/tr-essai
Pierre Paul Jacques
tr P p < ~/Essai-text-processing/tr-essai
pierre paul Jacques
cat ~/Essai-text-processing/tr-essai
Pierre Paul Jacques
tr P X < ~/Essai-text-processing/tr-essai
Xierre Xaul Jacques
cat ~/Essai-text-processing/tr-essai
Pierre Paul Jacques
tr PJ pj < ~/Essai-text-processing/tr-essai
pierre paul jacques
Elle permet d'éliminer les lignes dupliquées d'un fichier trié.
uniq [options] [fichier-entrée] [fichier-sortie]
cat ~/Essai-text-processing/users-uniq
Papi 1 Toto 3 Lili 2 Titi 4 Mami 003 Zaza 01 Nani
echo 01 Nani >> ~/Essai-text-processing/users-uniq
cat ~/Essai-text-processing/users-uniq
5 Papi 1 Toto 3 Lili 2 Titi 4 Mami 003 Zaza 01 Nani 01 Nani
sort ~/Essai-text-processing/users-uniq | uniq > ~/Essai-text-processing/users-sort-uniq
cat ~/Essai-text-processing/users-sort-uniq
003 Zaza 01 Nani 1 Toto 2 Titi 3 Lili 4 Mami 5 Papi
split [options] [fichier_entrée [préfixe_sortie]]
cat > ~/Essai-text-processing/liste-fruits <<EOF > 1 fraise > 2 abricot > 3 pomme > EOF
cat ~/Essai-text-processing/liste-fruits
1 fraise 2 abricot 3 pomme
-C : découper par taille maximale
ex: split -C 5 fichier : découpage en 5 octets
( ou de même split -C 5b)\\ split -C 5k fichier : découpage en 5 kilo-octets\\ split -C 5m fichier : découpage en 5 mega-octets\\
-b : découper par 1 taille précise
Ex: split -b 5 fichier) ⇒ tous les fichiers créés par découpage auront cette taille (sauf peut-être le dernier)
Il faut 8 bits pour faire 1 byte (1 octet)
fruit1b
:split -C 1b ~/Essai-text-processing/liste-fruits fruit1b
Le fichier n'est pas lourd et le découpage en taille de 1 byte (=octet) ne le découpe pas :
ls fruit1b*
fruit1baa
Un seul fichier a été créé.cat fruit1b*
1 fraise 2 abricot 3 pomme
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 :
split -C 1b ~/Essai-text-processing/liste-fruits fruit1b && mv fruit1b* ~/Essai-text-processing/
ls ~/Essai-text-processing/fruit1b*
/home/hypathie/Essai-text-processing/fruit1baa
cd Essai-text-processing/
split -C 1b ~/Essai-text-processing/liste-fruits fruit1b
ls fruit1b*
fruit1baa
Sans indication de préfixe, par défaut les fichiers créés par le découpage porte le préfixe x??
cd Essai-text-processing/
split -l 1 ~/Essai-text-processing/liste-fruits
ls x*
xaa xab xac
cat x*
1 fraise 2 abricot 3 pomme
La commande “unexpand” peut servir à convertir un groupe de sept espaces en une tabulation.
unexpand [-a] [fichier...]
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
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
unexpand -a ~/Essai-text-processing/users-infos-espaces
01 Toto toto@gmx.fr modo 02 Titi titi@gmail.com membre 03 Lili lili@hotmail.com membre
-a
pour que la conversion des espaces ait lieu partout et pas seulement pour les espaces constituants la première colonnes de droite.La commande “expand” peut servir à convertir les tabulations en espaces.
expand [-t numero] [fichier...]
Soit le fichier “~/Essai-text-processing/users-infos-tabul” contenant des tabulations
unexpand -a ~/Essai-text-processing/users-infos-espaces > ~/Essai-text-processing/users-infos-tabul
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
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
-t
nombreexpand -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
Voir : expand