Vous êtes sur la page 1sur 58

GESTION DES FICHIERS

REDIRECTIONS-PIPES-RECHERCHES
Exécution d’une commande

• Chaque commande produit un entier, appelé code de retour, qui n'est pas affiché. On
utilise la convention suivante :

 0 pour une commande qui se termine sans erreur


 un nombre différent de zéro, pour une commande qui se termine avec erreur

• Le code de sortie d'une commande interrompue dépend de cette commande. En général il est
non nul mais il n'y a pas de convention.

• Pour afficher le code de sortie de la dernière commande exécutée, on utilise la commande


echo $?

Ces codes de sortie peuvent être utilisés pour composer les commandes entre elles de façon
conditionnelle :
Exécution d’une commande
Enchainement non conditionnel des commandes (;) :

com1 ; com2

com1 est d'abord exécutée, puis, dès que com1 se termine ou est interrompue,
com2 est exécutée.

Exemple :
Exécution d’une commande
Enchainement conditionnel des commandes (&& ou ||) :

com1 && com2: com2 est exécutée si l’exécution de com1 a réussi


com1 || com2 : com2 est exécutée si l’exécution de com1 a échoué.

Exemples :
Les redirections entrée/sortie
Les flux standards:

Une des bases essentielles d'un système Unix / Linux est la redirection d'un flux émanant d'un
programme en direction d'un autre.

Les flux standards sont au nombre de trois :


1. STDIN (0) : STDIN n’est ni plus ni moins que l’entrée au clavier (dite "entrée standard").
Cela veut dire que tout ce que vous tapez au clavier va passer par ce canal d’entrée/sortie.
2. STDOUT (1) : STDOUT est ce que l’on appelle la "sortie standard". Les informations qui
apparaissent à l’écran passent par le canal STDOUT.
3. STDERR (2) : STDERR est la "sortie d’erreur standard". L’utilité d’avoir deux flux de sortie
permet de séparer les messages d’erreurs et la sortie normale.
Les numéros 0, 1, 2 désignent respectivement STDIN, STDOUT et STDERR, et peuvent être utilisés
dans les commandes shell.
Les redirections entrée/sortie
si nous exécutons un programme comme ls par exemple, il va afficher le résultat sur la
sortie standard, c'est à dire l'écran par défaut.

Il est possible d’envoyer (rediriger) ces différents flux vers des fichiers, d’autres
flux… c’est ce qu’on appelle la redirection des flux.
Les redirections entrée/sortie
Redirection de la sortie:

 cette redirection se fait par le biais des signes ">" et " >> "  

 La commande "cmd > fichier" va diriger le résultat de cmd vers

fichier . C’est à dire que cette commande va créer un fichier "fichier" si il

n’existe pas, contenant le résultat de la commande "cmd".


Exemple :
$ ls -l /bin > un_fichier
$ cat un_fichier
total 4872
-rwxr-xr-x 1 root root 3180 Jan 22 2001 arch
-rwxr-xr-x 1 root root 54905 May 22 2001 attr
-rwxr-xr-x 1 root bin 477692 Mar 22 2000 bash
...
Les redirections entrée/sortie
Si on utilise plusieurs fois des redirections sur un même fichier, avec ce que l’on a vu, le
fichier est écrasé à chaque fois. Pour éviter cela il est possible d’utiliser ">>" à la place de
">", auquel cas les données seront concaténées dans le fichier (mises à la suite).

Exemple : Cas 1: Cas 2:


$ ls rep1 $ ls rep1
Fiche1 Fiche2 Fiche3 Fiche1 Fiche2 Fiche3
   
$ ls rep2 $ ls rep2
Fiche4 Fiche5 Fiche4 Fiche5
   
$ ls rep1 > fichier $ ls rep1 > fichier
$ ls rep2 >> fichier $ ls rep2 > fichier
$ cat fichier $ cat fichier
Fiche1 Fiche4
Fiche2 Fiche5
Fiche3
Fiche4
Fiche5
Les redirections entrée/sortie
Redirection de l’entrée:

• cette redirection se fait par le biais des signes " < " et " << "  

• De même, avec la commande " "cmd < fichier" le contenu du fichier "fichier"
sera utilisé en entrée de la commande "cmd". C'est-à-dire qu’au lieu de saisir
l’entrée de la commande "cmd" au clavier, elle va être lue à partir du fichier
"fichier".
Les redirections entrée/sortie
Exemple:
$ cat fichier
Bonjour
Bonsoir
Salut
$ wc –l < fichier
3
Remarque:
en apparence les commandes wc –l < fichier et wc –l fichier sont strictement identiques, mais
ce qui se passe derrière est très différent.
- Si on écrit wc –l fichier, la commande wc reçoit en entrée le nom du fichier qu'elle doit
ensuite se charger d'ouvrir pour calculer le nombre de lignes.

- Si on écrit wc –l < fichier, la commande wc reçoit le contenu du fichier qu'elle se contente


simplement de calculer le nombre de ligne. C'est le shell qui se charge d'envoyer le contenu du
fichier à la commande wc .
Les redirections entrée/sortie

Le signe << fait quelque chose d'assez différent : il permet d'envoyer un


contenu écrit au clavier à une commande.
Exemple:
$ wc -c << STOP
> Combien de caractères dans cette phrase ?
> STOP
42

Remarque:
On n’est pas obligé d’utiliser le mot STOP. Ce qui compte, c'est que vous
définissiez un mot-clé qui servira à indiquer la fin de la saisie.
Les redirections entrée/sortie
Redirection d’erreur:

Toutes les commandes produisent deux flux de données différents, soit vers:
• la sortie standard : si tout va bien;
• la sortie d'erreurs : s'il y a une erreur.
Exemple:
Les redirections entrée/sortie
• Si l’on veut que les messages d’erreur d’une commande soit écrit dans un fichier
plutôt qu’affiché à l’écran, on redirige la sortie d’erreur de la commande vers un
fichier grâce à l’opérateur « 2> »  comme suit :
• Commande 2> fichier

Exemple:
$ cat fichierInexistant 2>ficheErreur
$cat ficheErreur
Aucun fichier ou répertoire de ce type

Remarque :
• Il est possible de fusionner les résultats et les erreurs dans un fichier unique
commande 1> fichier 2>&1
Les redirections entrée/sortie
Le pipe ("|") (ou tube en français) est un mécanisme permettant la communication
entre plusieurs commandes.
Par exemple si nous faisons "commande 1 | commande 2", le résultat de la
commande "commande 1" va être utilisé en entrée de la commande "commande 2".Il
est possible de chaîner ce type de commande autant que l’on veut.
Exemple :
Les tube de communication(Pipes)
Les groupes de commandes :

Les groupes de commandes peuvent remplacer les commandes simples dans les
pipes; mais dans ce cas, il faudra entourer le groupe de commande avec des
accolades {}; cela permet les combinaisons les plus variées.

Exemple :
{ cmd1 && cmd2; cmd3 || cmd4; } | cmd5
ATTENTION: l'espace après { et le ; avant } sont indispensables.
L'utilisation des parenthèses () est possible et a le même effet à la différence
qu'elles invoquent un nouveau shell qui sera chargé de l'exécution des commandes.
Les métacaractères
* Remplace une chaine de caractère de taille quelconque
? Remplace un seul caractère
[ ] Remplace une liste dans une plage donnée
[!] ou [^] Inverse les définitions de la plage de caractères

[A-D] intervalle de A à D (A, B, C, D) par exemple rep[A-D] donne


repA, repB, repC, repD
[2-5] intervalle de 2 à 5 (2, 3, 4, 5) par exemple 12[2-5]2 donne 1222,
1232, 1242, 1252
[a-dA-D] intervalle de a à d et A à D (a, b, c, d, A, B, C, D) par exemple
x[a-dA-D]y donne xay, xby, xcy, xdy, xAy, xBy, xCy, xDy

[1-3-] intervalle de 1 à 3 et - (1, 2, 3, -) par exemple [1-3-]3 donne 13,


23, 33, -3

[a-cI-K1-3] intervalle de a à c, I à K et 1 à 3 (a, b, c, I, J, K, 1, 2, 3)


Recherche d’un fichier: Find
• La commande find permet de chercher des fichiers ou des répertoires dans une
arborescence de répertoires.
• C'est une commande puissante permettant non seulement d'effectuer des
recherches de façon extrêmement précise, mais également de lancer des
traitements sur les objets trouvés.

Syntaxe :

# find répertoires expressions

Repertoire : indique à partir de quel point de l’arborescence la recherche est


effectuée. Si on précise pas le nom du répertoire la recherche se fait à partir du
répertoire courant.
Expressions : indique les conditions de recherche ou les actions à effectuer.
Recherche d’un fichier: Find

Expressions pour rechercher un objet selon son nom :

# find répertoires -name nom

Soit on cherche un nom exact


Exemple:
# find . -name photo.jpg
./images/photo.jpg
./images/vacances/photo.jpg
 
Soit le nom sera spécifié avec des métacaractères du shell.
Exemple:
# find . -name "photo?.jpg"
./images/photo1.jpg
./images/photo2.jpg
./images/vacances/photoA.jpg
./images/vacances/photoB.jpg
Recherche d’un fichier: Find

Autres syntaxes possibles:


 Utilisation du paramètre -iname à la place de –name permet de rendre la
commande find insensible à la casse.
 La commande : # find . -iname photo.jpg trouvera aussi bien Photo.JPG que
photo.jpg.

 Utilisation du point d’exclamation « ! » permet d’exclure certains fichiers du


résultat d'une recherche. Le caractère « ! » doit être placé devant l'expression à
inverser.
 La commande : # find . ! –name " *photo* " permet d’obtenir tous les fichiers
et répertoires ne contenant pas dans leur nom la chaîne "photo" .
Recherche d’un fichier: Find
Expressions pour rechercher un objet selon son type :

# find répertoires -type X


Avec X une lettre indiquant la nature de l’objet :
d : pour directory
f : pour file
l : pour lien symbolique
c : pour fichier caractère
b : pour fichier bloc

Exemple : rechercher des répertoires :


find . -type d
Recherche d’un fichier: Find
: Expressions pour rechercher des objets selon leur taille
Plusieurs syntaxes possibles :
# find répertoires -size n[bckwMG] : pour des tailles égales à n
# find répertoires -size -n[bckwMG] : pour des tailles inférieures à n
# find répertoires -size +n[bckwMG]: pour des tailles supérieures à n
Dans tous les cas on cherche des fichiers utilisant n unités d'espace.
Les unités sont :
 des blocs de 512 octets par défaut (ou si un suffixe `b' suit le nombre n),
 des octets si un suffixe `c' suit n,
des kilo-octets si un suffixe `k' est utilisé,
 des mots de 2 octets si un `w' suit le nombre n,
 des mega-octets si un suffixe `M' suit n
des giga-octets si un suffixe `G' suit n.

Exemple : rechercher des objets de plus de 1 000 000 caractères :


find . -size +1000000c
Recherche d’un fichier: Find

Expressions pour rechercher des objets selon leur propriétaire :

# find répertoires -user login 

Le propriétaire de l’objet doit être le login indiqué

Exemple : rechercher les objets de l’utilisateur «mohamed » :


% find . -user mohamed
Recherche d’un fichier: Find

Expressions pour rechercher des objets selon leur groupe propriétaire :

# find répertoires -group nom-group 

Le groupe propriétaire de l’objet doit être le nom indiqué

Exemple : rechercher les objets du groupe «admin » :


% find . -group admin
Recherche d’un fichier: Find

Expressions pour rechercher des objets selon la date

Plusieurs syntaxes :
# find répertoires -atime n Dernier accès au fichier il y a n*24 heures.
# find répertoires -mtime n Fichier dont les données ont été modifiées il
y a n*24 heures.
# find répertoires -ctime n Dernière modification du statut (droit
d’accès) du fichier il y a n*24 heures.
# find répertoires -newer fichier Fichier modifié plus récemment que le
fichier indiqué.

Les préfixes sont « a » pour accès, « m » pour modification et « c » pour status et les
suffixes sont time pour une tranche de 24 heures et min pour les minutes.
La valeur numérique donnée peut être précédée des signes + ou - .
 
Recherche d’un fichier: Find

Exemple :
• Rechercher des objets qui ont été modifiés il y a 3 jours.
find . -mtime 3
• Rechercher les objets ayant été modifiés il y a moins de 30 minutes :
find . -mmin -30
• Rechercher les répertoires auxquels on n'a pas accédé depuis plus de 72 heures :
find . -atime +3
Recherche d’un fichier: Find

Expressions pour rechercher des objets selon les droits d’accès

# find répertoires -perm permissions 

Les permissions doivent être strictement celles indiquées.

Exemple : rechercher des objets de permission 755 :


find . -perm 755
Recherche d’un fichier: Find

Composition d’options :

Syntaxe : OU logique entre expressions :


« condition1 -o condition2 »
Exemple :
% find . -name “classe" -o -name “cours"

Syntaxe : ET logique entre expressions :


« condition1 -a condition2 »
le -a est facultatif
Exemple :
% find . -name "fruits" -type d ou % find . -name "fruits "–a -type d
Recherche d’un fichier: Find
Options pour affichage du nom des objets trouvés :

Plusieurs options possibles :


-print : Affiche le nom complet du fichier sur la sortie standard, suivi d'un saut de
ligne. C’est l’affichage par défaut.
-ls : Affiche le nom du fichier en cours dans le format `ls -dils' sur la sortie standard.
Exemples :
Recherche d’un fichier: Find

Option d’exécution d’une commande :

« -exec commande {} \; »

Exemple :
rechercher tous les objets s’appelant « a.out » et on appliquera la commande
d’effacement aux objets trouvés :

% find . -name "a.out" -exec rm {} \;


Recherche d’occurrences de mots à l'intérieur de
fichier : grep

La commande grep permet de rechercher dans un ou plusieurs fichiers, ou sur


l’entrée standard, les lignes correspondant à une chaine de caractères ou à une
expression régulière.

Syntaxe : #grep [options] chaine [fichiers]

Fichier: indique le nom du fichier ou les fichiers où on veut effectuer la recherche


du mot.
chaine : désigne soit un mot exact ou une expression régulière.
Recherche d’occurrences de mots à
l'intérieur de fichier : grep

options :indique les options qu’on peut utiliser avec la commande grep et qui sont :

-c donne seulement le nombre de lignes trouvées obéissant au critère.

-l donne seulement le nom des fichiers où le critère a été trouvé

-v donne les lignes qui ne contiennent pas le critère

-i ne pas tenir compte de la casse (ne pas différencier majuscules

minuscules)

-n pour afficher les numéros des lignes trouvées

-w pour imposer que le motif corresponde à un mot entier d'une ligne


Recherche d’occurrences de mots à l'intérieur de
fichier : grep
Exemple :
- on cherche le mot «travail» dans tous les fichiers .tex du répertoire où on se trouve
# grep travail *.tex
- on cherche le nombre des lignes où le mot «travail» figure dans le fichier File.txt du
répertoire courant.
# grep -c travail File.txt
Remarque :
Afin de chercher une phrase, ou une expression régulière, on doit l’entourer de
guillemets
- on cherche la phrase ‘éruption volcanique’ dans le fichier total.txt sans tenir compte de
la casse.
# grep –i “eruption volcanique “ total.txt
Recherche d’occurrences de mots à l'intérieur de
fichier : grep

Les expressions régulières :


Les expressions régulières comme les métacaractères sont aussi des suites de
caractères permettant de faire des sélections.

Par exemple, pour retrouver toutes les occurrences du verbe écrire dans un fichier
on aurait besoin d'un nombre considérable de requêtes pour chacune des formes :
écris, écrirais, écrit, écrivant, etc.
En utilisant une expression régulière comme écri[a-z]+ on peut retrouver toutes ces
formes en même temps.
Recherche d’occurrences de mots à l'intérieur de
fichier : grep

Les différentes caractères utilisées dans les expressions régulières sont :


^ : début de ligne
Ex 1. On cherche dans le fichier passwd les lignes commençant par t
Grep "^t" /etc/passwd
Ex 2. on cherche les lignes ne commençant pas par t
grep -v "^t" /etc/passwd
. : un caractère quelconque
Ex: on cherche dans fichier, les lignes dont le 2 ème caractère est un « o »
grep "^.o" fichier
$ : fin de ligne
Ex 1: on cherche dans file.txt les lignes finissant par ‘‘ing’’
grep ’ing$’ file.txt
Ex2: On cherche dans file.txt les lignes finissant avec une majuscule
grep ’[A–Z]$’ file.txt
Recherche d’occurrences de mots à l'intérieur de
fichier : grep

[...] : plage de caractères permis


Ex: on affiche les lignes des fichiers essai?.txt qui contiennent a, b ou c
grep " [abc] " essai\?.txt
[^...]: plage de caractères interdits
Ex: cherche dans file.txt les lignes ne commençant pas par une voyelle.
grep –i ’^[^aeiou]’
x|y : occurrence du x ou y.
Ex: on cherche dans le fichier jour.doc l’un des formes suivants : Work, work, Works,
works, Working, working,Worked ou worked.
grep “[Ww]ork(s|ing|ed)?” jour.doc
Recherche d’occurrences de mots à l'intérieur de
fichier : grep

a* : zéro ou plus du caractère a


a+ : au moins une fois du a (1 ou plus)
a{n, m} :Entre n fois et m fois de a (au moins n, au plus m)
a? : 0 ou 1 fois de a
(abc) : définit l’expression abc , et on peut avoir aussi (abc)+ et (abc)?

Remarque :
• Afin d’inclure dans une commande les caractères spéciaux * , +, . , ? , [ , ] , { , } qui ont un rôle dans
la syntaxe des expressions régulières, on doit les protéger avec un \ (anti- slash).
•L’équivalence du métacaractère * est .* en expression régulière.
Recherche d’occurrences de mots à l'intérieur de
fichier : grep

Autres Exemples
On cherche dans file.txt les lignes comportant uniquement des Majuscules:
grep ’^[A–Z]+$’ file.txt
On cherche les lignes contenant les mots suivant le modèle T.t.
grep "T\.t\." /etc/passwd
On cherche dans le fichier des groupes, ceux qui commencent par a ou b .. ou j
less /etc/group | grep "^[a-j]"
On veut lister les répertoires du répertoire /etc
ls –l /etc | grep "^d"
On veut compter les lignes saisies au clavier qui se termine par a
grep -c "a$"
Recherche d’occurrences de mots à l'intérieur de
fichier : grep

Remarques:
• Il existe deux types d’expression régulière : simple et étendue.
• La différence entre les deux types c’est le fait que les caractères ?, +, {, |, (, et ) perdent
leur signification spéciale dans les expression régulière simple.
• Par défaut la commande grep interprète les expressions régulières simples.
• Pour utiliser les expressions régulières étendue soit :
 on utilise la commande grep avec les caractères ?, +, {, |, (, et ) précédé de
l’antislash,
 soit on utilise la commande grep associée à l’option –E.
 ou bien on utilise la variante egrep.

Exemple: Egrep ‘n$|t$’ fichier.txt


Tri d’un fichier : sort (en anglais sort)

# sort [options] fichiers

sort est une commande qui permet de trier des fichiers ou leurs contenus.
Par défaut, sort affiche l'ensemble des lignes des fichiers qu'on lui passe en paramètre
triées par ordre croissant de la table de codage des caractères

Exemple1:

% cat exemple.txt % sort exemple.txt


ordinateur 12
arbre 2
12 arbre
ascenceur ascenceur
2 ordinateur
Tri d’un fichier : sort (en anglais sort)
Quelques options :
-r : tri par ordre décroissant (en anglais reverse)
-n : tri numérique croissant (en anglais numerical)
Exemple2:

% cat exemple.txt % sort -n exemple.txt


12 2
2 3
3 12
33 22
22 33

% sort exemple.txt % sort -rn exemple.txt


12 33
2 22
22 12
3 3
33 2
Tri d’un fichier : sort (en anglais sort)

-t : permet de spécifier le séparateur de mots


-k : spécifie la clef de tri (en anglais key) ; on peut indiquer plusieurs clefs de tri. Cette clé
indique la position des champs et des caractères à utiliser.
Les positions des champs et des caractères sont numérotées à partir de 1.
Une position est de la forme f.c, où f est le numéro du champ à utiliser, et c le numéro du
premier caractère depuis le début du champ

Exemple 3
% cat exemple.txt % sort exemple.txt
or:100000 argent:40000
argent:40000 bois:5
bois:5 or:100000
% sort -t : -k 2 exemple.txt % sort -t : -k 2 -n exemple.txt
or:100000 bois:5
argent:40000 argent:40000
bois:5 or:100000
Tri d’un fichier : sort (en anglais sort)
Exemple 4 : trier des adresses IP

Soit le fichier à trier :


192.168.1.1 ananas.example.com
192.168.1.4 poire.example.org
127.0.0.1 localhost
192.168.1.3 cerise.example.org
134.157.46.129 serveur.formation.jussieu.fr
192.168.1.100 kiwi.example.org
192.168.1.2 banane.example.org
192.168.2.1 freebox.example.org

% sort -t . -k 1.3 -k 3 exemple.txt


192.168.1.100 kiwi.example.org
192.168.1.1 ananas.example.com
192.168.1.2 banane.example.org
192.168.1.3 cerise.example.org
192.168.1.4 poire.example.org
192.168.2.1 freebox.example.org
134.157.46.129 serveur.formation.jussieu.fr
127.0.0.1 localhost
Tri d’un fichier : sort (en anglais sort)

Autres options:
- f : Pour ignorer la casse.
-c: affiche un message si les lignes ne sont pas dans le bon ordre.
-o fichier: stocke le résultat du tri dans un fichier (attention sort fiche > fiche détruit fiche
avant de le trier, préférer cette option à toute redirection!),
Extraction de colonnes de fichiers : cut

#cut [options] fichiers

Quelques options :
-c : découpage selon des positions de caractères (en anglais character )
-f : découpage selon des positions de mots (en anglais field)
-d : indique le délimiteur de mots (en anglais delimiter)
Extraction de colonnes de fichiers : cut
Exemples :
Soit le fichier company.data :

406378:Sales:Itorre:Jan
031762:Marketing:Nasium:Jim
636496:Research:Ancholie:Mel
396082:Sales:Jucacion:Ed

 extraction sur chaque ligne de caractères pris isolément :


#cut -c4,8 company.data
3S
7M
4R
0S
 extraction sur chaque ligne de caractères d’une position 1 à une position 6 :
#cut -c1-6 company.data
406378
031762
636496
396082
Extraction de colonnes de fichiers : cut

·extraction sur chaque ligne (constituée de mots séparés par un certain délimiteur) de
mots pris isolément :

#cut -d: -f3 company.data

Itorre
Nasium
Ancholie
Jucacion

#cut -d: -f1,3 fichier

406378:Itorre
031762:Nasium
636496:Ancholie
396082:Jucacion
·
Extraction de colonnes de fichiers : cut

extraction sur chaque ligne (constituée de mots séparés par un certain délimiteur) du mot
i au mot j :

#cut -d: -f2-4 fichier

Sales:Itorre:Jan
Marketing:Nasium:Jim
Research:Ancholie:Mel
Sales:Jucacion:Ed
Commande de traduction de caractères : tr
(translate)

#tr [options] jeu1 [jeu2]

Deux utilisations possibles de la commande :


Remplacer un par un chaque caractère du jeu 1 par le caractère en même position
dans le jeu 2
Supprimer les caractères du jeu 1.
Remarque:
On notera qu’aucun nom de fichiers n’est à donner sur la ligne de commande. Et les
informations traitées proviennent de l’entrée standard.
Mais on peut rediriger le contenu d’un fichier à la commande.
Dans ce cas le résultat s'affiche à l'écran. Le fichier ne sera pas modifié avec cette
commande.
Commande de traduction de caractères : tr
(translate)

Les options de la commande tr sont :


Option –d : effacer les caractères du jeu 1 (pas de jeu2 mentionné)
Option –s : Si le caractère spécifié se répète plusieurs fois de suite, il est réduit à une
seule unité.
Option –c : Tous les caractères qui ne sont pas spécifiés dans la première chaîne sont
convertis selon les caractères de la seconde.
Commande de traduction de caractères : tr
(translate)
Exemples:
Soit le fichier contenant les lignes suivantes :
toto
Cheval
1. On veut convertir les lettres o en lettres
e: 3. On veut supprimer les lettres o :
Tr ’o’ ’e’ < exemple.txt tr -d ’o’ < exemple.txt
tete tt
Cheval Cheval

2. On veut convertir les lettres minuscules en 4. On veut convertir les lettres t et o en lettre
lettres m:
majuscules : tr ’to’ ’m’ < exemple.txt
tr ’[a-z]’ ’[A-Z]’ < exemple.txt mmmm
TOTO cheval
CHEVAL
Commande de traduction de caractères : tr
(translate)
Autres exemples :
pour effacer tous les ``0'' du fichier /etc/passwd :
tr -d "0" < /etc/passwd
pour réduire toute suite de ``0'' à un seul ``0'' dans le fichier /etc/passwd :
tr -s "0" < /etc/passwd
pour réduire toute suite de caractères non comprise (par ordre alphabétique) entre
``a'‘ et``s'' à un seul dans le fichier /etc/passwd :
tr -cs "[a-s]" < /etc/passwd | less
Par exemple, ``root'' contient deux fois ``o'', mais ``o'' est compris entre ``a'' et ``s'',
donc ``root'' ne sera pas changé. Par contre, ``uucp'' contient deux fois ``u'', et sera donc
convertit en ``ucp''.
Elimination des lignes redondantes d’un fichier : uniq

#uniq [options] fichier


Objet :
élimine les lignes consécutives redondantes
Quelques options :
-c : précède chaque ligne du résultat du nombre d’occurrences de cette ligne
dans le fichier original (en anglais count).
Exemple:
% cat exemple.txt % uniq exemple.txt % uniq -c exemple.txt
Ceci est un test. Ceci est un test. 2 Ceci est un test.
Ceci est un test. unix 1 unix
unix TEST 2 TEST
TEST unix 1 unix
TEST
unix
La commande split (Coupe un fichier en morceau)

split -n mon-fichier fichier

La commande split permet de couper un fichier en morceau (en plusieurs fichiers).


Cette commande va créer les fichiers fichieraa, fichierab, fichierac, ... qui contiendront
tous n lignes.
Le premier fichieraa contient les n premières lignes, ainsi de suite.
La commande tee

tee fichier

La commande tee est un petit programme permettant d'enregistrer les données qu'il reçoit
dans son flux d'entrée standard dans un fichier et de les renvoyer simultanément vers son
flux de sortie standard. Elle est couramment utilisée, en conjonction avec les tubes |, pour
dupliquer un flux de données.

Exemple :

ls -l | tee result.txt

À l'issue de cette commande, le fichier result.txt contiendra une copie des


données qui ont été émises par la commande ls -l
Remplacement du texte dans un fichier: sed

Le remplacement de texte dans un fichier peut être effectué de manière automatique, c'est-
à-dire sans avoir à ouvrir le fichier dans un éditeur, grâce à la commande sed (abréviation
de l'anglais « Stream Editor »).

Les opérations qu'elle doit effectuer sur le flux de données peuvent être spécifiées de
différentes manières, soit en fournissant un fichier script à l'aide de l'option -f, soit
directement sur la ligne de commande, avec l'option -e.
La syntaxe utilisée pour appeler sed est donc typiquement la suivante :

Sed -e "commandes" fichier > résultat


ou :
Sed -f script fichier > résultat

Où fichier est le fichier sur lequel sed doit travailler, et résultat est le fichier devant
recevoir le flux de données modifiées.
Remplacement du texte dans un fichier: sed

sed peut effectuer un grand nombre de commandes différentes et est réellement un


outil très puissant. Cependant, nous ne verrons ici que la commande qui permet
d'effectuer un remplacement de texte. Cette commande utilise la syntaxe suivante :

s/texte/remplacement/options

Où texte est le texte à rechercher, remplacement est le texte de remplacement, et


options est un jeu d'options exprimant la manière dont le remplacement doit être
fait. Les options sont spécifiées à l'aide de simples caractères, les plus utiles étant :

g : qui permet d'effectuer un remplacement global (au lieu de ne remplacer que la


première occurrence du texte rencontrée dans chaque ligne),
I : qui permet d'effectuer une recherche sans tenir compte de la casse des
caractères.
Remplacement du texte dans un fichier: sed

Exemples:

sed -e "s/bonjour/bonsoir/" test.txt > modif.txt

Permet de remplacer pour chaque ligne du fichier test.txt la première occurrence


de la chaîne de caractères « bonjour » par la chaîne de caractères « bonsoir », et
d'enregistrer le résultat dans le fichier modif.txt

sed -e "s/bonjour/bonsoir/g" test.txt > modif.txt

Permet de remplacer toutes les occurrences de la chaîne de caractères « bonjour »


par la chaîne de caractères « bonsoir » dans le texte du fichier test.txt, et
d'enregistrer le résultat dans le fichier modif.txt.
Remplacement du texte dans un fichier: sed

Exemples:

Vous aimerez peut-être aussi