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
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
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
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 constituant la première colonne 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
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
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
01 Toto toto@gmx.fr modo 02 Titi titi@gmail.com membre 03 Lili lili@hotmail.com membre
Voir : expand