Programmation système - Shell et Commandes UNIX

Documents pareils
Programme awk------introduction rapide

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Algorithmique et Programmation, IMA


Introduction au langage C

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Programmation système de commandes en C

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

STAGE IREM 0- Premiers pas en Python

TP 1. Prise en main du langage Python

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Découverte de Python

Java Licence Professionnelle CISII,

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

INF 321 : mémento de la syntaxe de Java

Initiation à la programmation en Python

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Programmation Web. Madalina Croitoru IUT Montpellier

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Bases de programmation. Cours 5. Structurer les données

Rappels Entrées -Sorties

LES TYPES DE DONNÉES DU LANGAGE PASCAL

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Plan du cours. Historique du langage Nouveautés de Java 7

Présentation du langage et premières fonctions

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Premiers pas avec Mathematica

as Architecture des Systèmes d Information

Corrigé des TD 1 à 5

Projet de programmation (IK3) : TP n 1 Correction

Perl Orienté Objet BioPerl There is more than one way to do it

Programmer en JAVA. par Tama

Introduction à MATLAB R

Le prototype de la fonction main()

Langage Java. Classe de première SI

TD3: tableaux avancées, première classe et chaînes

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Calcul Formel et Numérique, Partie I

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Claude Delannoy. 3 e édition C++

Cours d algorithmique pour la classe de 2nde

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Organigramme / Algorigramme Dossier élève 1 SI

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Programmation en langage C

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Présentation du PL/SQL

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Calcul Formel et Numérique, Partie I


ALGORITHMIQUE ET PROGRAMMATION En C

Programmation C++ (débutant)/instructions for, while et do...while

Cours d Algorithmique et de Langage C v 3.0

Programme Compte bancaire (code)

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Cours 7 : Utilisation de modules sous python

Introduction à R. Florence Yerly. Dept. de mathématiques, Université de Fribourg (CH) SP 2011

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Notions fondamentales du langage C# Version 1.0

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

1. Structure d'un programme FORTRAN 95

Les bases fondamentales du langage Transact SQL

Cours Informatique Master STEP

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Conventions d écriture et outils de mise au point

Exercice sur les Dockers

AWS avancé. Surveiller votre utilisation d EC2

L ALGORITHMIQUE. Algorithme

Initiation à l algorithmique

Recherche dans un tableau

Introduction à l algorithmique et à la programmation M1102 CM n 3

Mysql avec EasyPhp. 1 er mars 2006

Représentation d un entier en base b

INFO-F-404 : Techniques avancées de systèmes d exploitation

Arbres binaires de recherche

Solutions du chapitre 4

Programmation en Java IUT GEII (MC-II1) 1

Bernard HAMM, Évelyne LAVOISIER

Programmation système en C/C++

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Principes des langages de programmation INF 321. Eric Goubault

Exonet : sauvegarde automatisée d une base de données

EPREUVE PRATIQUE DES TECHNIQUES INFORMATIQUES ACTIVITE N 1. Thème de l activité : Configuration d un firewall

I. Introduction aux fonctions : les fonctions standards

Gestion de stock pour un magasin

Programmation Classique en langage C

4. Groupement d objets

Cours d initiation à la programmation en C++ Johann Cuenin

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Introduction au Système d Exploitation Unix/Linux

ACTIVITÉ DE PROGRAMMATION

Transcription:

Expressions rationnelles tr sed awk Exemples Crédits Programmation système - Shell et Commandes UNIX Gestion des filtres avancés <dntt@u-cergy.fr> Université de Cergy-Pontoise Tuyêt Trâm DANG Département NGOC des Sciences Informatiques

Expressions rationnelles tr sed awk Exemples Crédits 1 Expressions rationnelles 2 tr 3 sed 4 awk Présentation et syntaxe Fonctions Variables Structures de contrôles Tableaux 5 Exemples 6 Crédits

Expressions rationnelles tr sed awk Exemples Crédits Expressions rationnelles (regular expressions - regexp). : un joker, qui représente un caractère unique quelconque (sauf caractères de contrôle et fin de ligne). [ ] : des classes de caractères entre crochets [ ]. ^ : au début d une classe de caractères entre crochets, signifie qu on considère le complément de cette classe (l ensemble des caractères qui ne sont pas dans la classe). ^ et $ : représentent respectivement un début et une fin de ligne. * répétition de 0 à n fois le caractère précédent (attention, ne pas confondre avec le * utilisé par le shell pour lister les fichiers) \ permet de considérer le caractère suivant comme un caractère normal. Utilisé dans grep, sed, awk, ruby, javacc, lex, php, shells, perl, sql, etc.

Expressions rationnelles tr sed awk Exemples Crédits Exemple regexp.ac [a-z] [^a-z] [st]ac [^f]ac ^[st]ac [st]ac$ ^trax$ ba*.* \* représente les chaînes de 3 caractères qui se terminent par ac correspond à n importe quelle lettre minuscule (nonaccentuée) correspond à n importe quel caractère qui n est pas une lettre minuscule non-accentuée représente entre autres sac et tac représente les mots de trois lettres qui se terminent par ac et ne commencent pas par f représente les mots sac et tac en début de ligne représente les mots sac et tac en fin de ligne représente le mot trax seul sur une ligne représente le mot b, ba, baa,... baaaaaaaaaaaaaaa,... représente n importe quel mot représente le caractère *

Expressions rationnelles tr sed awk Exemples Crédits 1 Expressions rationnelles 2 tr 3 sed 4 awk Présentation et syntaxe Fonctions Variables Structures de contrôles Tableaux 5 Exemples 6 Crédits

Expressions rationnelles tr sed awk Exemples Crédits Conversion de chaînes de caractères : tr tr -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. -d Efface le caractère spécifié. -s Si le caractère spécifié se répéte plusieurs fois de suite, il est réduit à une seule unité. $ cat fichier j ai un chapeau de paille $ cat fichier tr "[A-Z]" "[a-z]" J AI UN CHAPEAU DE PAILLE $ tr "abc" "AB" << EOF > j ai un chapeau de paille > EOF j Ai un BhApeAu de paille $ tr -d "ac" < fichier j i un hpeu de pille

Expressions rationnelles tr sed awk Exemples Crédits Conversion de chaînes de caractères : tr $ ls -l total 36 drwx------ 3 dntt users 4096 mar 15 14:35 gconfd-dntt drwx------ 2 ntravers users 4096 mar 8 14:23 gconfd-ntra drwx------ 2 root root 4096 mar 8 15:45 gconfd-root $ ls -l tr -s " " total 36 drwx------ 3 dntt users 4096 mar 15 14:35 gconfd-dntt drwx------ 2 ntravers users 4096 mar 8 14:23 gconfd-ntraver drwx------ 2 root root 4096 mar 8 15:45 gconfd-root

Expressions rationnelles tr sed awk Exemples Crédits 1 Expressions rationnelles 2 tr 3 sed 4 awk Présentation et syntaxe Fonctions Variables Structures de contrôles Tableaux 5 Exemples 6 Crédits

Expressions rationnelles tr sed awk Exemples Crédits Éditeur de flux : sed sed Éditeur de flux -e commande commande d édition semblable à celles de l éditeur vi La commande de substitution s : ad1,ad2s/re/remplacement/flags où si flags vaut g : global, c est à dire toutes les occurences de la chaine RE (par defaut seule la première occurence est remplacée). négation : précéder la commande de! La commande de supression d Les commande d insertions a,i a texte : écrit le texte après la ligne i texte : écrit le texte avant la ligne

Expressions rationnelles tr sed awk Exemples Crédits sed : exemples $ cat toto ga bu zo meuh $ sed -e "a xxx" toto ga xxx bu xxx zo xxx meuh xxx $ sed -e "i xxx" toto xxx ga xxx bu xxx zo xxx meuh

Expressions rationnelles tr sed awk Exemples Crédits sed : exemples plus complexes Remplace les mots Chat et chat par CHAT sur toute la ligne dans tout le fichier. sed "s/[cc]hat/chat/g" fichier Encadre le premier nombre trouvé sur la ligne avec des ** sed -e "s/\([0-9][0-9]*\)/**\1**/" fichier Remplace tous les : du fichier par une espace. sed -e "s/:/ /g" fichier Affiche le contenu du fichier à partir de la 11ème ligne. sed "1,10d" fichier On efface tout sauf les lignes commençant par From, donc on imprime les lignes commençant par From. sed "/^From/!d" fichier

1 Expressions rationnelles 2 tr 3 sed 4 awk Présentation et syntaxe Fonctions Variables Structures de contrôles Tableaux 5 Exemples 6 Crédits

Éditeur de flux évolué : awk awk programme fichier Langage de recherche de motif et manipulation de texte -F Spécifie les séparateurs de champs -v Définie une variable utilisée à l intérieur du programme. -f Les commandes sont lu à partir d un fichier. Un enregistrement est une chaîne d entrée délimitée par un retour chariot Un champ est une chaîne délimitée par un séparateur de champ (FS) dans un enregistrement. Le FS peut être défini dans le bloc BEGIN. Par défaut, c est une espace. Suite d actions : motif { action } champs d un enregistrement (ligne) sont désignés par $1, $2,...$NF

Utilisation générale de awk awk BEGIN { instructions exécutées au début du programme, une seule fois seulement. } critère1 { instructions } critère2 { instructions }... END { instructions exécutées à la fin du programme, une seule fois seulement. } BEGIN et END ne sont pas obligatoires.

awk : exemples simples Affiche toutes les lignes du fichiers cat fichier awk { print $0 } Affiche le second champ de chaque ligne du fichier cat fichier awk { print $2 } Affiche toutes les lignes comprenant /* et */ cat un_fichier.c awk /\/\*/, /\*\// { print $0 } Affiche toutes les lignes dont le premier caractère non-blanc n est pas un # cat un_fichier awk! (/^ *#/ /^$/) { print $0 }

Critères /expression régulière/ $0 /expression régulière/ $0!/expression régulière/ une expression de comparaison : <, <=, ==,!=, >=, > une combinaison (opérateurs booléens &&!) motif1,motif2 : chaque ligne entre la premiere ligne correspondant au motif1 et la première ligne correspondant au motif2

Type des actions fonctions prédéfinies, numerique ou chaine de caracteres controle de flots affectation impression # commentaire ; instruction vide

Affichage print exp, exp ou affiche les expressions print (exp, exp) print equivaut à print $0 printf format, exp, exp ou identique à print mais avec format (printf en C) printf (format, exp, exp) Un format est une chaine de caractères et des constructeurs commencant par % specifieur signification d nombre decimal s chaine de caractères specifieur signification - expression justifiée à gauche largeur largeur d affichage.precision longueur maximale d une chaine de caracteres ou nombre de decimales

Exemple de manipulation sur les champs toto 0298452223 0638431234 50 titi 0466442312 0638453211 31 tutu 0154674487 0645227937 23 L exemple vérifie que dans le fichier le numéro de téléphone domicile (champ 2) et le numéro de portable (champ 3) sont bien des nombres. cat adresse awk BEGIN { print "On vérifie les numéros de téléphone; FS=" "} $2! /^[0-9][0-9]*$/ { print "Erreur sur le numéro de téléphone domicile" print "ligne n "NR": \ n"$0} $3! /^[0-9][0-9]*$/ { print "Erreur sur le numéro de téléphone du portable" print " ligne n "NR": \ n"$0} END { print "Vérification terminé"}

Fonctions prédéfinies (numériques) Nom des fonctions signification atan2(y,x) arc tangente de x/y en radians dans l interval -pi pi cos(x) cosinus (en radians) exp(x) exponentielle e à la puissance x int(x) valeur entière log(x) logarithme naturel rand() nombre aléatoire entre 0 et 1 sin(x) sinus (en radians) sqrt(x) racine carrée srand(x) reinitialiser le générateur de nombre aléatoire......

Expressions rationnelles tr sed awk Exemples Crédits Présentation et syntaxe Fonctions Variables Structures de co Fonctions prédéfinies (chaines de caractères) Nom des fonctions signification gsub(r,s,t) sur la chaine t, remplace toutes les occurance de r par s index(s,t) retourne la position la plus à gauche de la chaine t dans la chaine s length(s) retourne la longueur de la chaine s match(s,r) retourne l index ou s correspond à r et positionne RSTART et RLENTH split(s,a,fs) split s dans le tableau a sur fs, retourne le nombre de champs sprintf(fmt,liste expressionsmattée retourne la liste des expressions for- suivant fmt sub(r,s,t) comme gsub, mais remplce uniquement la première occurence substr(s,i,n) retourne la sous chaine de s commencant en i et de taille n......

Fonctions définies par l utilisateur fonction mafonction(liste des paramètres) { instructions return valeur }

Variables définies par l utilisateur Pas de déclaration de variable, on utilise une variable quand on en a besoin. Le typage est déterminé automatiquement par awk (chaine ou numérique). valeur=5 var=30 var=var-valeur var="toto" var="toto " "va a la plage"

Variables prédéfinies Variable Signification Val. par déf. ARGC Nombre d arguments de la ligne de commande - ARGV tableau des arguments de la ligne de commnde - FILENAME nom du fichier sur lequel on applique les commandes - FNR Nombre d enregistrements du fichier - FS separateur de champs en entrée NF nombre de champs de l enregistrement courant - NR nombre d enregistrements deja lu - OFMT format de sortie des nombres "%.6g" OFS separateur de champs pour la sortie ORS separateur d enregistrement pour la sortie "\n" RLENGTH longueur de la chaine trouvée - RS separateur d enregistrement en entrée "\n" RSTART debut de la chaine trouvée - SUBSEP separateur de subscript "\034" Les champs de la ligne courant sont : $1, $2,..., $NF. La ligne entière est $0

Tests : if, else if,else if (condition) instruction1 else instruction2 Soit le fichier /etc/passwd : login:motdepasse:uid:gid:geco:repertoiremaison:shell cat /etc/passwd awk BEGIN { print "test de l absence de mot de passe"; FS=":"} NF==7 { #pour toutes les lignes contenant 7 champs if ($2=="") # si le deuxieme champ est vide { print $1 " n a pas de mot de passe"} else { print $1 " a un mot de passe"} } END { print ("C est fini")}

Boucle : while Tant que la condition est satisfaite (vraie) on exécute l instruction while while (condition) instruction Exemple : cat /etc/passwd awk BEGIN {print "affichage de tous les champs de passwd";fs=":"} { i=1 while (i=<nf) # tant qu on n est pas en fin de ligne { print $i # on affiche le champ i++ # incrementation du compteur pour passer # au champ suivant } } END {print ("C est fini")}

Boucle : do, while On exécute les instructions jusqu à que la condition soit satisfaite do, while do instructions while (condition)

Boucle : for for for (instruction de départ ; condition ; instruction d incrémentation) cat /etc/passwd awk BEGIN{ print "affichage de tous les champs de passwd"; FS=":"} { for (i=1;i=><nf;i++) # initialisation du compteur à 1, # on incrémente le compteur jusqu a ce # qu on atteigne NF (fin de la ligne) { print $i } # on affiche le champ } END {print"c est fini")}

Sauts : break, continue, next, exit Break : sortie de boucle Continue : commence une nouvelle itération de la boucle. Next : passe à l enregistrement suivant. On reprend le script awk à son début Exit : ignore le reste de l entrée et execute les actions définie par END

Tableaux Un tableau est une variable se composant d un certains nombres d autres variables (chaînes de caractères, numériques,...) tab[index]=valeur L index est soit un numérique soit une chaine de caractère tableau[1]="truc" age["toto"]=27 age["titi"]=42 for (index in tab) { print "legume :" tab[index] }

Expressions rationnelles tr sed awk Exemples Crédits 1 Expressions rationnelles 2 tr 3 sed 4 awk Présentation et syntaxe Fonctions Variables Structures de contrôles Tableaux 5 Exemples 6 Crédits

Expressions rationnelles tr sed awk Exemples Crédits cat /etc/passwd awk # Tous les utilisateurs du groupe users(gid 22)basculeront # groupe boulot(gid 24) "; BEGIN {print" FS=":"; OFS=":"} $4!= 22 {print $0} # Si le groupe n est pas 22 # on ne fait rien $4 ==22 {$4=24;print $0} # Si le groupe est 22, on lui # reaffecte 24 END {print"c est fini"} > passwd.essai

Expressions rationnelles tr sed awk Exemples Crédits 1 Expressions rationnelles 2 tr 3 sed 4 awk Présentation et syntaxe Fonctions Variables Structures de contrôles Tableaux 5 Exemples 6 Crédits

Expressions rationnelles tr sed awk Exemples Crédits Crédits Ces transparents ont été réalisés en s inspirant des pages web suivantes : http ://www.lmd.ens.fr/ressources-info/unix- Doc/html/cours-unix-13.html http ://www.xgarreau.org/aide/admin/boutils/awk lea.php http ://www.shellunix.com/awk.html