[bash] Extraire des lignes d'une catégorie souhaitée (sans awk)
Bonjour,
Je ne parviens pas à extraire, à partir d’un champ d’un fichier ‘livres’ les différents enregistrements selon la catégorie de livres souhaitée par la personne (j’ai déjà écrit la partie du script où il faut read la catégorie du livre souhaitée par une personne et j’ai déjà récupéré les données de chaque champ).
!!!Je ne dois pas utiliser de awk pour cet exercice qui se fait en bash… Merci à eux qui m’aideront :)
Par exemple j’ai ceci,
Citation:
Nom1: Prénom1:TITRE1:2000:BD
Nom2: Prénom2:TITRE2:2001:ROMAN
Nom3: Prénom3:TITRE3:2002:SCIENCES
Nom4: Prénom4:TITRE4:2003:BD
Nom5: Prénom5:TITRE5:2004:ROMAN
Nom6: Prénom6:TITRE6:2004:SCIENCES
Et à la fin de mon script, je dois créer un fichier dans lequel :
- la première ligne va m’indiquer la liste des auteurs (1re et 2e colonne) et titres de livres(3e colonne) de la catégorie (4e colonne)
- les lignes suivantes m’indiquent le nom de l'auteur(1re colonne) ainsi que le titre des livres de la catégorie sélectionnée(3e colonne) , séparés par un -
- la dernière ligne indique le nombre de livres trouvés
Voici ce que j’ai déjà essayé de faire (en m’imaginant pour ‘ROMAN’) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #créer le fichier reprenant titre liste de livres et nombres de livres extraits
ISFold=$IFS
IFS=':'
while read nom prenom titre annee categorie
do
function creer_fichier {
touch -p "/home/livres/$1"
if grep -q "^$1:" /etc/group
then
ls -l | head -1 /home/user/livres | cut -d: -f1,4 /home/user/livres
elif
ls -l | tail -n+2 /home/user/livres | cut -d: -f1 "-" -f3 /home/user/livres
else
ls | wc -l | tail -1 /home/user/livres
fi
resultat=$(grep -l student/home/user/livres/*)
}
done < /home/user/livres
done |