Cours-Gratuit
  • Accueil
  • Blog
  • Cours informatique
home icon Cours gratuits » Cours informatique » Cours UNIX - Linux » Exercices Linux/Unix »

Articles similaires

  • Exercices sur la programmation des scripts shell d Unix
  • Exercices unix pragrammation des scripts shells -6-
  • Exercice script unix shell - processus -
  • Exercices sur la commande awk
  • Exercices script Shell unix - backup - poubelle - commande - trash - find
  • Exercices sur la programmation des scripts Unix
  • Exercices script UNIX : commandes, fonctions et structures de contrôle
  • Exercices sur la programmation web avec le langage PHP
  • Exercices unix scripts shells - inititiation aux variables d'environnement.-
  • Exercice unix - commande find - entrées sorties -
  • Exercices programmation shell
  • Exercices sur les critères des noms de fichiers UNIX

Documents similaires

  • Solution des exercices de microeconomie 2eme annee de magistere

  • Cours et exercices JavaScript

  • Exercices sur les mathematiques financieres

  • Support de cours en unix programmation web

  • TP programmation web pour débutant

  • Exercices et corriges de l'economie mondiale et international

  • Serie d’exercices avec corriges en economie : croissance et developpement economique

  • Programmation orientée objet Langage C++

Exercices unix programmation script shell - awk

Rédigé par GC Team, Publié le 31 Juillet 2009, Mise à jour le Samedi, 17 Décembre 2022 20:16
Participez au vote ☆☆☆☆☆★★★★★

Les exercices portent sur le fichier mesure suivant:

nom de la mesure | lieu de la mesure | date de la mesure | valeur brute | correction 1 | correction 2 | correction 3 | valeur corrigée

|

marcel | brest | 18/12/1998 | 12.5 | 1.34 | 1.23 | -1.5 | 13.47

|

polo | loctudy | 21/05/1997 | 11.5 | 1.24 | 1.12 | -1.2 | 12.66

|

otto | camaret | 04/09/1995 | 9.3 | 0.98 | 1.17 | -1.12 | 10.33

|

Le champ valeur corrigée est la somme algébrique de la valeur brute et des 3 corrections.

Exercice 1 {sidebar id=1}

Vous vous êtes bourrés sur le signe de la correction 1, de même dans la correction 2, vous avez découvert que vous avez commis une petite erreur et qu'il fallait lui ajouter 0.1. Modifier le fichier en prenant en compte ces corrections, faites en sorte que la valeur corrigée soit modifiée en conséquence.

Dans le même exercice vous afficherez la somme totale des valeurs corrigées et la valeur corrigée moyenne. Ces valeurs doivent être sauvegardées dans un fichier résultat.

Solution:

1
2
3
4
5
6
7
8
9
NR = =1 { printf("%s\n",$0)}
NR>1 { $5*=-1
$6+=0.1
$8=$4+$5+$6+$7
somme+=$8
printf("%s\n",$0)}
END { printf("somme totale des valeurs corrigées %f \n",somme) > "resultat";
printf("valeur corrigée moyenne %f \n" (somme/(NR-1)) >> "resultat"}
' $1

 

Appelez votre script exo1.awk, donnez lui les droits 755, et appelez le ainsi:

exo1.awk mesure > mesure.corrigee

Après exécution, vérifiez l'existence et le contenu du fichier resultat.

Exercice 2

Afficher les mesures ayant une année paire. Redirigez le résultat de la recherche vers un fichier paire.

Solution:

1
2
3
4
5
6
#!/bin/bash
awk ' BEGIN { printf("Mesures ayant une année paire \n") > "paire";FS="|"}
NR>1 { annee=substr($3,7,4)
if (annee%2= =0)
{ printf("mesure %s ",$1); printf(" année %s paire\n ",annee) >> "paire"}
' $1

 

Appelez votre script exo2.awk, donnez lui les droits 755, et appelez le ainsi: {sidebar id=6}

exo2.awk mesure

Après exécution, vérifiez l'existence et le contenu du fichier paire.

Exercice 3

Vérifiez que le format de la date jj/mm/aaaa est correcte ainsi que le format du lieu (formé que de lettres de l'alphabet en minuscules ou majuscules).

Solution:

1
2
3
4
5
NR>1 && $2 !~ /^[0-3][0-9]\/[01][0-9]/\[0-9][0-9][0-9][0-9]$/
{ printf(" Mauvais format de date pour mesure %s \n", $1 }
NR>1 && $2 !~ /^[a-zA-Z][a-zA-Z]*$/
{ printf(" Mauvais format du lieu pour mesure %s \n",$1 }
' $1

 

Appelez votre script exo3.awk, donnez lui les droits 755, et appelez le ainsi:

exo3.awk mesure

Le fonctionnement du script sous LINUX est un peu foireux, ça marche bien par contre sur d'autres environnements (HP-UX ou Solaris), va savoir pour quoi...

On pourrait améliorer encore plus la vérification en vérifiant bien que la date va de 1 à 31 et le mois de 1 à 12, avec un script du style:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

 #!/bin/csh

NR>1 && $3 !~ /^[0-3][0-9]\/[01][0-9]/\[0-9][0-9][0-9][0-9]$/

{ jour=substr($3,1,2)

mois=substr($3,3,2)

if (jour > 31 || mois >12) { printf("mauvais format pour mesure %s\n",$1)}

}

' $1

C'est un peu lourd comme script, à vous de trouver plus simple. Toujours un fonctionnement capricieux sous LINUX.

Exercice 4

Afficher les noms de mesure et leur valeur corrigée associée en vous servant d'un tableau associatif.

Solution:

1
2
3
4
5
6
 #!/bin/bash
NR>1 { mesure-corrigee[$1]=$8
END
{ for (mesure in mesure-corrigee)
{printf("mesure %s ",mesure); printf(" égale à %s \n",mesure-corrigee[mesure]) }}
' $1

 

Appelez votre script exo4.awk, donnez lui les droits 755, et appelez le ainsi:

exo4.awk mesure

  • Contactez-nous
  • A propos de nous
  • On recrute
  • Rechercher dans le site
  • Politique de confidentialité
  • Droit d'auteur/Copyright
  • Conditions générales d'utilisation
  • Plan du site
  • Accueil
  • Blog
  • Finance et compta.
  • Formations Pro.
  • Logiciels & Apps
  • Organisation
  • Cours informatique
  • Aide à la rédaction
  • Etudes et Metiers
  • Science et Tech
  • Titans de la Tech
id 11354 02