Résumé des Commandes Unix - Filtres de
Données et de Fichiers
Les filtres
Introduction
• Filtres: Ensemble de commandes qui acceptent des données de l’entrée
standard, effectuent des transformations sur ces données, dirigent ces
données vers la sortie standard et affichent leurs messages d’erreur vers la
sortie d’erreurs.
• Filtres connus sous Unix: tr, cut, sort, grep, paste, diff, sed, awk.
Le filtre tr
• Syntaxe: tr [options] chaine1 chaine2
• Explication: Remplace ou supprime des caractères sélectionnés.
• Options principales:
– -d: suppression des caractères sélectionnés.
– -s: traiter caractère répétitif comme caractère unique.
– -c: tous les caractères qui ne sont pas spécifiés dans la première
chaı̂ne sont filtrés.
• Exemples:
$ echo ” coucou ” | t r [ a−z ] [ A−Z ] # COUCOU
$ echo ” aaabbbaaa ” | t r −s [ a−z ] [ A−Z ] # ABA
$ echo −e ”A\tB A” | t r −d ” [ : blank : ] ” # ABA
$ echo ”Home Number : 175” | t r −c ” [ : a l p h a : ] ” ”∗”
# Home∗Number∗∗∗∗∗∗
$ echo ”Home Number : 175” | t r −cd ” [ : d i g i t : ] ” # 175
$ echo ” a r i a n e ” | t r ” a i ” ”ou” # oruone
1
Le filtre cut
• Explication: Affiche des zones spécifiques d’un fichier.
• Options principales:
– -c: spécifie le numéro du caractère à extraire.
– -f: spécifie le numéro du champ (field) à extraire.
– -d: spécifie le délimiteur des éléments dans une ligne (par défaut
TAB).
• Exemples:
$ cut −c1 / e t c / passwd # a f f i c h e l e p r e m i e r c a r a c t r e de chaque l i g n e d
$ cut −d : −f 6 / e t c / passwd # a f f i c h e l e 6 me champ du f i c h i e r
$ cut −f1 , 3 −d : / e t c / passwd # e x t r a i t l e s champs 1 e t 3
$ cut −f1 −3 −d : / e t c / passwd # e x t r a i t l e s champs de 1 3
$ cut −f4 − −d : / e t c / passwd # e x t r a i t l e s champs p a r t i r du 4 me
Le filtre sort
• Explication: Trie les lignes d’un fichier.
• Options principales:
– -b: saute les colonnes constituées de blancs.
– -d: trie de type dictionnaire (alphabétique).
– -n: trie par ordre numérique.
– -f: ignore la casse (minuscules et majuscules).
– -r: trie inverse.
– -t:: trie suivant les champs séparés par le caractère spécifié.
• Exemples:
$ sort −t : +1 −2 f i c h i e r . c s v # u t i l i s e ’ : ’ comme s p a r a t e u r
$ sort −t : +5.1 f i c h i e r # t r i e s u r un c a r a c t r e s i t u l a 2 me p o s
$ sort −t ” ; ” +0d −1 +2dr −3 f i c h i e r # t r i m u l t i c r i t r e s
$ sort f i c h i e r 1 f i c h i e r 2 # combine e t t r i e p l u s i e u r s f i c h i e r s la f o i
Le filtre paste
• Syntaxe: paste fichier1 fichier2...
• Explication: Concatène les lignes de même numéro dans fichier1 et
fichier2. Fusion horizontale de deux fichiers ou plus. Possibilité de spécifier
un séparateur avec l’option -d (par défaut TAB).
2
Le filtre diff
• Syntaxe: diff fichier1 fichier2
• Explication: Donne les modifications à apporter au premier fichier spécifié
pour qu’il ait le même contenu que le second. Les différences sont indiquées
sous forme de codes.
• Exemples de codes:
– 3a4,7: Après la troisième ligne du premier fichier, ajouter les lignes
4 à 7 du second.
– 5,8d4: Supprimer les lignes 5 à 8 du premier fichier.
– 10,15c12,17: Changer les lignes 10 à 15 du premier fichier pour les
lignes 12 à 17 du second.
• Option: -b: Ignore les blancs (espaces) lors de la comparaison des lignes.
Le filtre grep
• Syntaxe: grep [options] <motif> <fichier/répertoire>
• Explication: Recherche des lignes qui correspondent à un motif donné.
• Options principales:
– -i: ignore la casse.
– -c: compte le nombre de lignes contenant le motif.
– -n: chaque ligne contenant le motif est numérotée.
– -r: recherche récursive dans le répertoire courant.
– -v: affiche les lignes ne contenant pas le motif.
– -l: affiche le nom des fichiers qui contiennent le motif.
• Expressions régulières:
– ^: début de ligne
– .: un caractère quelconque
– $: fin de ligne
– x*: zéro ou plus d’occurrences du caractère x
– x+: une ou plus occurrences du caractère x
– x?: une occurrence unique du caractère x
– [...]: plage de caractères permis
.
– [ ..] : plagedecaractèresinterdits{n}:nombrederépétitionsnducaractèreplacédevant
3
–• Exemples:
$ g r e p ” abc ” f 1 . t x t # a z e r t y abc t o t o 2024 04
$ g r e p −n ” abc ” f 1 . t x t # 1 : a z e r t y abc t o t o 2024 04
$ g r e p −n − i ” abc ” f 1 . t x t # 1 : a z e r t y abc t o t o 2024 04
$ g r e p − i ”ˆ t o t o ” f 1 . t x t # ToTo ABC u s e r Admin 333
$ g r e p ”333 $ ” f 1 . t x t # ToTo ABC u s e r Admin 333
$ g r e p ”[0 −9] $ ” f 1 . t x t # a z e r t y abc t o t o 2024 04
$ g r e p −v −n ” u s e r ” f 1 . t x t # 1 : a z e r t y abc t o t o 2024 04
$ g r e p −c − i ” t o t o ” f 1 . t x t # 2
$ g r e p −n ”ˆ $ ” f 1 . t x t # 2 :
$ cp f 1 . t x t f 2
$ g r e p ” u s e r ” ∗ # f 1 . t x t : ToTo ABC u s e r Admin 333
$ g r e p ”[0 −9]\{2\} $ ” f 1 . t x t # ToTo ABC u s e r Admin 333
$ g r e p ” [ 0 − 9 ] \ { 2 \ } . ” f 1 . t x t # a z e r t y abc t o t o 2024 04
Le filtre find
• Syntaxe: find <répertoire> <critère> -print
• Explication: Retrouve des fichiers à partir de certains critères.
• Critères de recherche:
– -name: recherche sur le nom du fichier.
– -perm: recherche sur les droits d’accès du fichier.
– -links: recherche sur le nombre de liens du fichier.
– -user: recherche sur le propriétaire du fichier.
– -group: recherche sur le groupe auquel appartient le fichier.
– -type: recherche sur le type (d=répertoire, c=caractère, f=fichier
normal).
– -size: recherche sur la taille du fichier en nombre de blocs (1 bloc=512
octets).
– -atime: recherche par date de dernier accès en lecture du fichier.
– -mtime: recherche par date de dernière modification du fichier.
– -ctime: recherche par date de création du fichier.
• Opérateurs logiques:
– critère1 critère2 ou critère1 -a critère2: et logique.
– !critère: non logique.
– critère1 − ocritère2: ou logique.
4
Exercice 11
• Mettre en place un script qui, toutes les 5 minutes, ajoute la date, l’heure
et le pourcentage de l’utilisation actuelle de la mémoire RAM dans un
fichier nommé memoire.log.
• Utiliser la commande free pour récupérer les informations sur la mémoire.
Exercice 11 (corrigé)
#!/ b i n / bash
d a t e=$ ( d a t e +”%d−%m−%Y %T” )
mem info=$ ( f r e e | g r e p Mem)
tab =($mem info )
t o t a l=$ { tab [ 1 ] }
used=$ { tab [ 2 ] }
u s a g e=$ ( ( used ∗ 100 / t o t a l ) )
echo ” $ d a t e − u t i l i s a t i o n RAM : $ u s a g e%” >> memoire . l o g
• cronmem.sh
• On ajoute cette tâche par crontab -e:
∗/5 ∗ ∗ ∗ ∗ bash /home/ emsi /cronmem . sh
Exercice 12
• Écrire un script bigps.sh qui affiche le processus qui consomme le plus de
mémoire à l’instant, ainsi que la taille de l’espace mémoire utilisé par ce
processus. Utiliser les commandes ps et free en plus des filtres de votre
choix.