1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| #! /bin/bash
echo
echo "Ce script a pour but d'établir une liste qui reprend les auteurs et les titres des livres correspondant à une catégorie donnée"
#vérifie que le fichier contenant la liste des livres existe bien
#vérifie si le chemin est fourni comme 1er arg à la cmd
if [ -z "$1" ]
then
echo "Utilisation $0 <livres.txt>"
echo "Aucun fichier input n'a été donné"
exit 1
fi
#verifie si ce meme fichier existe
if [ ! -f "$1" ]
then
echo "Le fichier $1 n existe pas"
exit 2
fi
#demander à l'utilisateur quelle catégorie de livres il souhaite extraire
read -p "Quelle catégorie souhaiteriez-vous extraire ?" choixCategorie
#extraire ces livres du fichier et créer un fichier avec : le titre, la liste des livres et ensuite le nombre de livres extraits
while read choixCategorie
do
# Récupérer les données des différents champs
nom="$(echo "$choixCategorie" | cut -d";" -f1)"
prenom="$(echo "$choixCategorie" | cut -d";" -f2)"
titre="$(echo "$choixCategorie" | cut -d";" -f3)"
annee="$(echo "$choixCategorie" | cut -d";" -f4)"
categorie="$(echo "$choixCategorie" | cut -d";" -f5)"
fichier="home/user/livres.txt"
fichier2="home/user/fichier2.txt"
# Compter le nombre de livres
#Première façon de faire
if [[ ! -f "$fichier" ]]
then
echo "le fichier n'existe pas"
else
lig="$home/user/livres.txt/*"
count=0
for nbLigne in $(cat /home/user/fichier.txt | wc -l)
do
if [[ ! -z "$fichier" ]]
then count=$(($count+1))
fi
done
echo "Il y a $count lignes trouvées"
#à refaire car il s'agit d'un mauvais réajustement d'un code trouvé sur le net...
TAILLE=$(wc -l /home/user/fichier2.txt | cut -d " " -f5)
for i in $(seq 1 $TAILLE) ; do
nbLivres=$(sed -n -e ${i}p /home/user/fic2.txt)
sed -i -e "s/nbLivres${i}/$nbLivres/g" /tmp/fichier1
done
#créer le fichier reprenant titre liste de livres et nombres de livres extraits
#Première façon de faire (pas correct)
while IFS=':' read nom prenom titre annee categorie
do
read choixCategorie | touch -p "/home/livres/$1"
"$choixCategorie" = "$1" && echo "correspondance \"$categorie\" : $nom $prenom $titre $annee"
done < "$fichier2"
#Deuxième façon de faire (pas correct non plus)
lignes=$(cut -d IFS=':' -f5 livres.txt)
while read choixCategorie; do
touch /home/user/fic2.txt
cat /home/user/livres.txt | cut -d: -f1,3 | grep -w "$choixCategorie"
done
cat $lignes /home/user/livres.txt >> touch /home/user/fic{SCIENCES,BD,ROMAN}.txt
#Troisième idée comme façon de faire (pas terminée)
cat < $fichier > $fichier2
done |
Partager