bash, IA et genration de code

francois_francois

Membre confirmé
6 Août 2022
57
1
54
Bonjour,

Je me suis absenté un bon moment, je reviens un peu sur le forum.

N'etant pas a l'aise avec la programmation, j'ai utilisé ChatGPT pour générer du code. Ca marche plutot pas mal.

Par contre, j'ai un souci avec le resultat.

CE QUE LE SCRIPT FAIT:
Le script doit chercher des suites de lettres dans un dossier ou se trouve des fichiers texte.

dans l'exemple que je montre ci-dessous, j'ai un dossier avec 48 fichiers texte. le script scanne les 48 fichiers, qui m'affiche le nombre d'occurences trouvées (et les sauvegarde dans un fichier texte)

LE PROBLEME:
Quand le script scanne les fichiers, ou aucune occurence n'est trouvée, dans le terminal, je perds la ligne "Recherche:[1/2]. Trouvés: [96]. Progression: [100%] [48/48] Analyse: nom_fichier_analysé

Je n'arrive pas a modifier le script pour afficher toute de même cette ligne (bien sur vu qu'aucune occurence n'est trouvée, les valeurs seront Recherche: [2/2]. Trouvés: [0]. Progression: [100%] [48/48] Analyse: nom_fichier_analysé

Je joint une copie ecran pour simplifier mes explications.
Je joint egalement la partie du code qui semble poser le probleme

Merci a celui/celle ou ceux qui voudront bien jeter un oeil.

:)


# Initialisation des compteurs
current_duo=0
total_occurrences=0 # Réinitialiser le compteur total d'occurrences

# Initialisation du compteur du pourcentage %
pourcent="0"

# Lire chaque ligne du fichier "mots.txt" et traiter les lettres de chaque ligne
while IFS= read -r ligne
do
current_duo=$((current_duo + 1))

echo "" >> "$resultats_file"
echo "••••••••••••••••••••••••••••••••••••••••••••••••••••" >> "$resultats_file"
echo "•••>>> $ligne" >> "$resultats_file"

formatted_line=""
length=${#ligne}

for ((i=0; i<length; i++)); do
formatted_line="${formatted_line}[${ligne:i:1}]"
if [ $i -lt $(($length-1)) ]; then
formatted_line="${formatted_line} + "
fi
done

echo "Recherche des MULTI-LETTRES ${bg_blue}[$current_duo/$num_duos]${reset_color} >>> ${text_blanc}$formatted_line${reset_color}"

start_time=$(date +%s)

# Construire un motif de recherche pour chaque lettre de la séquence
search_pattern=""
for letter in $(echo "$ligne" | sed 's/ //g' | sed 's/./&.*/g')
do
search_pattern="${search_pattern}.*$letter"
done

fichiers_trouves=$(rg -lP "$search_pattern" "$dossier_recherche")

occurrences_trouvees=0 # Réinitialiser le compteur d'occurrences pour cette séquence
for fichier in $fichiers_trouves
do
occurrences=$(rg -oP "$search_pattern" "$fichier")
if [ -n "$occurrences" ]; then
filtered_occurrences=$(echo "$occurrences" | awk -v len="$longueur_occurence" 'length <= len')
if [ -n "$filtered_occurrences" ]; then
echo "$filtered_occurrences" | sed 's/^/ /' >> "$resultats_file"
occurrences_trouvees=$((occurrences_trouvees + $(echo "$filtered_occurrences" | wc -l)))

# Incrémenter le compteur de fichiers traités
current_file=$((current_file + 1))

# Ajout de la taille du fichier à la sortie
taille_fichier=$(du -h "$fichier" | cut -f1)

# formate le pourcentage
pourcent=$(printf "%.2f" $((current_file * 10000 / $num_mots_index))e-2)

# Nom du fichier
fichier_partie=$(basename "$fichier")

echo -ne "Recherche:${bg_blue}[$current_duo/$num_duos]${reset_color} Trouvé(s):${color}[$occurrences_trouvees]${reset_color} Progression:[$pourcent%] ${bg_black}[$current_file/$num_mots_index]${reset_color} Analyse:$fichier_partie / $taille_fichier\033[0K\r"

fi
fi
done

current_file=0

total_occurrences=$((total_occurrences + occurrences_trouvees)) # Ajouter les occurrences trouvées pour cette séquence

end_time=$(date +%s)
time_taken=$((end_time - start_time))
time_taken_minutes=$((time_taken / 60))
echo ""
echo "Trouvé: ${bg_blue}[$occurrences_trouvees]${reset_color}"
echo "-----------------------------------------------------"
echo ""

done < "$mots_file"
 

Fichiers joints

  • ccccc copie.jpg
    ccccc copie.jpg
    69,4 KB · Affichages: 7