#76 Le 24/02/2011, à 17:19
- FRUiT
Re : Manipulation de fichier texte [Résolu]
Faudrait déjà que j'update pour kde4.5+ lol. Et puis je connais pas trop gnome.
Manque l'extension non ?
nblignes=$(egrep -vc "^$" "${ffichier}.txt")
Et attention j'ai rajouté l'option "-v" ce qui compte finalement toutes les lignes SAUF les vides (et pas besoin de wc finalement).
Dernière modification par FRUiT (Le 24/02/2011, à 17:35)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#77 Le 24/02/2011, à 17:36
- ridfa
Re : Manipulation de fichier texte [Résolu]
OK
le script compte déjà les lignes
ligne=$(wc -l <<< "${a[@]}")
mais toujours zéro
edit : pour l'extension non, il compte depuis la variable puis injecte le résultat au travers d'une fenêtre zenity.
Le fichier final ne doit pas comporter les infos de comptage
Dernière modification par ridfa (Le 24/02/2011, à 17:38)
Hors ligne
#78 Le 24/02/2011, à 17:44
- FRUiT
Re : Manipulation de fichier texte [Résolu]
Ah oui pardon j'ai mal lu.
Une petite remarque en attendant :
lignefichier=$(wc -l "${fichier}")
A remplacer par :
lignefichier=$(wc -l < "${fichier}")
Comme ça tu récupères que le nombre et pas tout le retour de wc (ça évite le ${lignefichier%% *} ).
Donc ça, ça devrait marcher non ?
nblignes=$(egrep -vc "^$" <<<"${ffichier}")
Dernière modification par FRUiT (Le 24/02/2011, à 20:13)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#79 Le 24/02/2011, à 17:53
- ridfa
Re : Manipulation de fichier texte [Résolu]
Bien joué, ça marche !
Par contre, je ne vois pas de différence entre
lignefichier=$(wc -l "${fichier}")
et
lignefichier=$(wc -l < "${fichier}")
ça marche dans les deux cas
Hors ligne
#80 Le 24/02/2011, à 17:58
- FRUiT
Re : Manipulation de fichier texte [Résolu]
Ben,
> wc -l /sh/putf
52 /sh/putf
> wc -l < /sh/putf
52
En gros, ta ligne suivante peut se simplifier en :
echo "le fichier comporte $lignefichier lignes" > "${ffichier}.txt"
De même que :
ligne=$(wc -l <<< "${a[@]}")
Retourne également uniquement le nombre donc tu peux ensuite écrire :
echo "$ligne lignes ont été modifiées" >> "${ffichier}.txt"
Dernière modification par FRUiT (Le 24/02/2011, à 18:04)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#81 Le 24/02/2011, à 18:22
- ridfa
Re : Manipulation de fichier texte [Résolu]
Bien vu !
> wc -l /sh/putf
52 /sh/putf
> wc -l < /sh/putf
52
En plus je crois que l'on m'a déjà fait la remarque mais à un autre endroit du script
Hizoka va gueuler car c'est lui qui me l'a signaler si je ne m'abuse
Merci à toi
car vu le nombre d'infos que je dois digérer , je n'ai pas encore pris la peine de chercher le sens de [@]
cela m'a été signalé dans le cas d'une liste.
Sympa, j'en aurais appris bien plus avec ce script que toutes les lectures que j'ai eues qui se sont envolées comme de la fumée, on dirait
Hors ligne
#82 Le 24/02/2011, à 18:28
- FRUiT
Re : Manipulation de fichier texte [Résolu]
a est un tableau. a[@] désigne l'ensemble des éléments de ce tableau, au même titre que a[1] désigne l'élément numéro 2 du tableau.
Dernière modification par FRUiT (Le 24/02/2011, à 18:28)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#83 Le 24/02/2011, à 18:37
- ridfa
Re : Manipulation de fichier texte [Résolu]
Merci FRUiT
J'ai appliqué tes conseils d'optimisation et c nickel
Dernière modification par ridfa (Le 24/02/2011, à 18:38)
Hors ligne
#84 Le 24/02/2011, à 19:14
- Hizoka
Re : Manipulation de fichier texte [Résolu]
si ca t'a était utile, tant mieux
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#85 Le 24/02/2011, à 19:41
- ridfa
Re : Manipulation de fichier texte [Résolu]
Dès que j'apprends un truc je trouve ça utile en plus je gagne un temps fou à traiter mes fichiers
Là ou je reste perplexe c'est toujours et encore la création de cette ligne vide supplémentaire en fin de fichier
Comme je le disais un peu plus haut, je ne comprends bien la piste que tu as évoquée concernant l'espace dans la variable $a
Sinon tout est parfait à mon goût car ça fait bien longtemps que je voulais mettre en oeuvre un tel script pour en faire d'autres après, bien sûr
Hors ligne
#86 Le 25/02/2011, à 08:01
- Totor
Re : Manipulation de fichier texte [Résolu]
Salut,
Il ne faut pas chercher bien loin pour comprendre d'où vient cette ligne supplémentaire:
a+="${REPLY/*http/http}"$'\n'
Remplace : printf "$a" > "${ffichier}.txt" par printf "${a%?}" > "${ffichier}.txt" et elle n'y paraitra plus.
-- Lucid Lynx --
Hors ligne
#87 Le 25/02/2011, à 08:12
- ridfa
Re : Manipulation de fichier texte [Résolu]
Salut Totor
J'essaie ça de suite
edit : J'ai mofidié en conséquence mais la ligne est toujours là
En plus la coloration du code change comme s'il manquait qqch
Dernière modification par ridfa (Le 25/02/2011, à 08:20)
Hors ligne
#88 Le 25/02/2011, à 08:55
- Totor
Re : Manipulation de fichier texte [Résolu]
as-tu toujours les lignes suivantes dans ton script ?
echo "le fichier comporte ${lignefichier%% *} lignes" > "${ffichier}.txt"
echo "${ligne% *} lignes ont été modifiées" >> "${ffichier}.txt"
echo "${a}" >> "${ffichier}.txt"
Si oui :
- pourquoi réécrire ${a} dans le fichier ? (puisque c'est déjà fait après la boucle)
- il faut changer echo "${a}" >> "${ffichier}.txt" par printf "${a%?}" >> "${ffichier}.txt" car le dernier caractère de ${a} est un retour à la ligne et la builtin echo (sans option -n) rajoute un retour à la ligne automatiquement (soit deux retours à la ligne)
Si tu ne réécris pas ${a} et que tu ne veux pas de la dernière ligne vide, il faut modifier echo "${ligne% *} lignes ont été modifiées" >> "${ffichier}.txt" en printf "${ligne% *} lignes ont été modifiées" >> "${ffichier}.txt" (ou echo -n ....)
Dernière modification par Totor (Le 25/02/2011, à 09:49)
-- Lucid Lynx --
Hors ligne
#89 Le 25/02/2011, à 09:19
- ridfa
Re : Manipulation de fichier texte [Résolu]
Avant de tester, je réponds à ta question pourquoi réécrire dans le fichier.
En fait avant de produire le fichier final, une fenêtre zenity s'ouvre avec un récap des lignes créées ainsi que les infos concernant le comptage des lignes du fichier initial, du fichier final et aussi le comptage des lignes
mais ces 3 lignes de "comptage" ne doivent pas apparaître dans le fichier final
Voilà
Merci pour tes conseils, je teste tout de suite
edit : voilà en mixant un peu tout ce que tu m'as dit pour enfin supprimer cette ligne vide
echo "le fichier comporte ${lignefichier} lignes" > "${ffichier}.txt"
echo "${ligne% *} lignes ont été modifiées" >> "${ffichier}.txt"
printf "${a%?}" >> "${ffichier}.txt"
Et là it's very good
Du coup voilà le script au complet
#!/bin/bash
fichier=$(zenity --file-selection\
--title "Fichier à traiter"\
--filename "dossier_par_defaut_pour_choisir_fichier") || exit
ffichier=$(zenity --file-selection \
--title "Nom du fichier final" \
--filename "dossier_par_defaut_pour_enregistrer_fichier_final" \
--save) || exit
a=
while read
do
[[ $REPLY == *http://192.168.1.1* ]]\
&& [[ $a != *${REPLY#*http://192.168.1.1}* ]]\
&& a+="${REPLY/*http/http}"$'\n'
done <"$fichier"
printf "${a% *}" > "${ffichier}.txt"
lignefichier=$(wc -l <"${fichier[@]}")
ligne=$(wc -l <<< "${a[@]}")
echo "le fichier comporte ${lignefichier} lignes" > "${ffichier}.txt"
echo "${ligne% *} lignes ont été modifiées" >> "${ffichier}.txt"
printf "${a%?}" >> "${ffichier}.txt"
zenity --text-info \
--title "Résultat" \
--width "412" \
--filename "${ffichier}.txt"
sed -i '1,2d' "${ffichier}.txt"
exit 0
Merci Totor
Dernière modification par ridfa (Le 25/02/2011, à 10:06)
Hors ligne
#90 Le 08/03/2011, à 09:04
- YannUbuntu
Re : Manipulation de fichier texte [Résolu]
Bonjour
J'ai besoin de votre aide pour un sujet similaire : http://forum.ubuntu-fr.org/viewtopic.ph … 8#p4029768
Merci d'avance
Dernière modification par YannUbuntu (Le 08/03/2011, à 09:06)
à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison
Hors ligne