#1 Le 14/01/2014, à 10:57
- EricG
[Résolu]Construire un fichier texte d'après des extraits
Bonjour,
Je pense que le script est assez évolué pour sortir de la "proposition de script" pour atterrir ici.
Voilà le but :
Construire un fichier texte d'après des extraits sous forme de fichiers dans un répertoire, au fur et à mesure de questions oui/non.
Franchement, c'est pour une lettre de motivation, elle est différente selon à qui je l'adresse, je mets des trucs en avant, d'autres moins, etc.
Le résultat est sous forme d'un conc.txt qu'il faut encore mettre en forme dans un traitement de texte.
Les limitations :
Les extraits sont sous forme de 1.txt, 2.txt, 3.txt, etc.
Je préfèrerais la forme "1 explication du contenu.txt", "2 un autre contenu.txt"
Bref, toujours un numéro mais avec des explications.
Les problème vient du test sur l’existence du fichier, et du "trop d'arguments" que vous connaissez bien.
Donc au lieu des if [ -e $indic*.txt ] je n'ai queif [ -e $indic.txt ]
Également, bon je n'arrive pas encore à insérer un saut de ligne entre les extraits concaténés dans conc.txt.
Ça doit être un truc tout con mais bon.
#!/bin/bash
clear
# On se place dans le bon répertoire
rep=/media/ericgbnew/Transcend/lettre_motivation/
cd $rep
indic=0
# Tant que c'est vrai !
while true; do
indic=$(($indic + 1))
# Si le fichier $indic*.txt n'existe pas --> exit
if [ -e $indic.txt ]; then
echo ""
echo "Le fichier $indic*.txt propose cet extrait :"
echo
cat $indic.txt
echo ""
else
echo "Le fichier $indic*.txt n'existe pas, fin du script."
exit
fi
# On pose la question...
read -p "Voulez vous ajouter cet extrait [oui/non] ? : " choix
case $choix in
# la réponse est oui...
oui )
cat $indic.txt>>conc.txt
clear
echo "Lettre de motivation en construction :"
echo "--------------------------------------"
echo
cat conc.txt
echo
echo "--------------------------------------";;
# la réponse est non...
non ) clear
echo "Lettre de motivation en construction :"
echo "--------------------------------------"
echo
cat conc.txt
echo
echo "--------------------------------------";;
# la réponse est autre...
* ) echo ""
clear
echo "Répondez oui ou non !"
indic=$(($indic - 1));;
esac
done
Dernière modification par EricG (Le 15/01/2014, à 12:25)
Hors ligne
#2 Le 14/01/2014, à 11:45
- pingouinux
Re : [Résolu]Construire un fichier texte d'après des extraits
Bonjour,
Je préfèrerais la forme "1 explication du contenu.txt", "2 un autre contenu.txt"
Tu peux faire ceci à l'intérieur de ta boucle while, donc pour une valeur de indic donnée
for fichier in $indic*.txt; do
Traitement de "$fichier"
done
Inconvénient : pour indic=1, tu récupéreras aussi les fichiers commençant par 11, 12, etc…
je n'arrive pas encore à insérer un saut de ligne entre les extraits concaténés dans conc.txt.
echo >>conc.txt
Remarque :
Tu peux remplacer
indic=$(($indic + 1))
par
((indic++))
Hors ligne
#3 Le 15/01/2014, à 12:25
- EricG
Re : [Résolu]Construire un fichier texte d'après des extraits
Bonjour,
Heu, le traitement consisterait à donner une explication selon indic ?
donc, par exemple "si $indic = 1 alors 'Objet de la lettre' "
"si $indic = 2 alors 'Civilité' ", etc.
Inconvénient : pour indic=1, tu récupéreras aussi les fichiers commençant par 11, 12, etc…
Il y aurait bien une astuce, genre au lieu de "1 Objet de la lettre.txt" : "01 Objet de la lettre.txt", etc.
J'avais retiré le texte, je pensais que ça posait problème pour le test d'existence..
Et je prends les deux premiers caractères, et quand on manipule par l’arithmétique 01 redevient 1.
Je comprends les deux astuces finales, merci pour ton aide.
J'avoue que j'ai moins la tête à ça aujourd'hui, Bonne journée.
Hors ligne
#4 Le 15/01/2014, à 13:02
- pingouinux
Re : [Résolu]Construire un fichier texte d'après des extraits
Peux-tu montrer les noms de tes fichiers ?
ls *.txt
Si le numéro est toujours suivi du même caractère (espace, point ou autre), on s'en sort facilement.
Hors ligne