Advertisement
anthonimes

TP5

Nov 19th, 2020 (edited)
376
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.16 KB | None | 0 0
  1. # TP5 --- Exercice 4
  2. #!/bin/bash
  3.  
  4. # Vérifie que le script est bien appelé avec 2 arguments
  5. if [ $# -ne 2 ]; then
  6.     echo "USAGE: $0 TEXTE_SCRIPT NUM_SCENE"
  7.     exit 1
  8. fi
  9.  
  10. texte="$1"
  11. maScene="Scène $2."
  12.  
  13.  
  14. # Récupère les numéros de lignes des débuts de scène et des rideaux
  15. grep -E -n '^(Scène|Rideau.)' "$texte" > /tmp/debut_scenes
  16.  
  17. # Numéro de ligne du début de la scène recherchée
  18. debut=$( grep "$maScene$" /tmp/debut_scenes | cut -d':' -f1 )
  19. # Numéro de ligne de la fin de scène (début scène suivante ou rideau)
  20. fin=$( grep -A1 "$maScene$" /tmp/debut_scenes | tail -n1 | cut -d':' -f1 )
  21.  
  22. # Erreur si la scène recherchée n'existe pas
  23. # -z correspond à une chaîne de caractères vide
  24. if [ -z "$debut" ]; then
  25.     echo "La scène $2 n'existe pas."
  26.     exit 2
  27. fi
  28.  
  29. # Récupère le texte de la scène
  30. head -n$fin "$texte" | tail -n+$debut > /tmp/texte_scene
  31.  
  32.  
  33. # Affiche le nombre de répliques pour chaque personnage dans la scène (commande similaire à l'exercice 2) --- sed élimine les espaces (un peu plus propre que tr ?)
  34. echo "Répliques dans la scène $2 :"
  35. cat /tmp/texte_scene | grep -E '^[[:upper:]].*:$' | cut -d':' -f1 | cut -d'(' -f1 | sed -E 's/ +$//' | sort | uniq -c | sort -n
  36.  
  37. # Suppression des fichiers temporaires
  38. rm /tmp/debut_scenes /tmp/texte_scene
  39.  
  40. # TP5 --- Exercice 2
  41. #!/bin/bash
  42. if [ $# -ne 1 ]; then
  43.     echo "Usage: bash $0 fichier"
  44.     exit 1
  45. fi
  46.  
  47. # attention : egrep semble deprecated
  48. # Le {2,2}+ oblige à avoir au moins des majuscules en début de ligne, et semble suffire ?
  49. egrep "^[A-Z]{2,2}+.*:$" $1 | cut -d":" -f1 | cut -d"(" -f1 | tr -d " " | sort | uniq -c |  sort -rn | head -n5
  50.  
  51. # TP5 --- Exercice 3
  52. #!/bin/bash
  53. if [ $# -ne 1 ]; then
  54.     echo "Usage: bash $0 fichier";
  55.     exit 1;
  56. fi
  57.  
  58. egrep '^(Acte|Scène|Rideau.)' "$1"
  59. #grep -E '^(Acte|Scène|Rideau)' "$1"
  60.  
  61. # TP5 --- Exercice 1
  62. #!/bin/bash
  63. if [ $# -ne 1 ]; then
  64.     echo "Usage: bash $0 fichier";
  65.     exit 1;
  66. fi
  67.  
  68. txt=$1
  69. debut=$( grep -n "START OF THIS PROJECT" $txt | cut -d":" -f1 )
  70. debut=$((debut+1))
  71. fin=$( grep -n "END OF THIS PROJECT" $txt | cut -d":" -f1 )
  72. fin=$((fin-1))
  73. cat $txt | tr -d '\r' | head -n$fin | tail -n +$debut
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement