BASH: extraire des lignes d'une catégorie souhaitée sans awk
RésoluBonjour,
Je ne parviens pas à extraire, à partir du champ ‘categorie’, d’un fichier ‘livres.txt’ (présent dans mon répertoire personnel) les différents enregistrements correspondants à la catégorie de livres souhaitée par la personne.
À la fin de mon script, je dois créer un fichier dans lequel :
- la première ligne contient la liste des auteurs (1ère et 2e colonnes) et titres de livres (3e colonne) de la catégorie (4e colonne) ;
- les lignes suivantes indiquent le nom de l'auteur (1ère 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 la fin du script que j’essaie de terminer. Merci à ceux qui me corrigeront :
IFSold="$IFS" IFS=':' while IFS=':' read nom prenom titre annee categorie do touch -p "/home/livres/$1" "$cat" = "$1" && echo "correspondance \"$categorie\" : $nom $prenom $titre $annee" done <"$chemin/$fichier"
- BASH: extraire des lignes d'une catégorie souhaitée sans awk
- Bingo bash free - Télécharger - Divers Jeux
- Bash list ✓ - Forum Shell
- Bash pause ✓ - Forum Shell
- Bash permission non accordée - Forum Shell
- Bash addition - Forum Programmation
1 réponse
Bonjour,
Peux-tu donner un (petit) fichier d'entrée en exemple et le résultat attendu ? En particulier je ne comprends pas pourquoi dans le fichier résultat les auteurs sont sur deux colonnes.
Est-ce que dans ton code il ne suffirait pas de rajouter un "if" dans la boucle "while" pour ignorer les lignes qui ne correspondent pas à la catégorie ?
Voici un exemple qui montre comment tu pourrais faire (je prends ici le fichier /etc/passwd qui suit les mêmes conventions) :
#!/bin/bash IFS=":" cat /etc/passwd | while read login auth uid gid description home shell do if [ "$shell" = "/bin/bash" ] then echo $login fi done
Bonne chance