Problème script SHELL

wbailly Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   -  
wbailly Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'aurais besoin d'un petit coup de main au sujet d'un script SHELL qui me sert a enlever tous les sauts de ligne ainsi que les caractères "carrés" qui sont présents dans mes fichiers, le souci étant que je souhaite nommer mes nouveaux fichiers grâce a une variable que j'incrémente au préalable. Le traitement s'effectue, le script me créée bien un fichier 1.txt puis un 2.txt puis un 3.txt etc... Mon problème est que tout mes X.txt créés sont identiques et contiennent chacun tout mes fichiers textes originaux traités mais mis les uns à la suite des autres. Le but étant que le premier fichier traité par le script soit écrit dans 1.txt, mon deuxième fichier traité écrit dans 2.txt, etc...
Voila j'espère avoir été assez clair.
Merci d'avance :)

Voici mon code:

#!/bin/sh
# -*- coding: utf-8 -*-

declare -i nbfiches=27
declare -i i

for((i=1;i<=nbfiches;i++))
do
cat /home/STAGE/newfact/Batiment/* | sed ':s;N;s/^F/\n/;bs' | sed ':s;N;s/?/\n/;bs' | sed ':s;N;s/?/\n/;bs' | sed ':s;N;s/\n\n\n/\n\n/;bs' > /home/STAGE/newfact/Batiment/$i.txt
done




A voir également:

6 réponses

wbailly Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   2
 
J'ai vraiment besoin d'aide là ce serait sympa qu'on me donne une réponse s'il vous plaît...
0
wbailly Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   2
 
J'ai collé tout le monde ou quoi ? :)
0
HostOfSeraphim Messages postés 6750 Date d'inscription   Statut Contributeur Dernière intervention   1 608
 
Donc tu as une boucle qui parcourt l'ensemble des fiches présentes dans le répertoire... visiblement pour chaque fiche trouvée, tu fais un cat de tous les fichiers présents (cat ... *). Du coup le fait de retrouver l'ensemble des textes originaux dans chaque fichier .txt me semble venir de là.


0
wbailly Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   2
 
Merci de votre réponse HostOfSeraphim ^^

Est-ce que cela veut dire que je dois m'occuper des fichiers un par un?
Car sans le symbole "*" il n'y a plus ce phénomène de récurrence qui me permettait de traiter tous les fichiers en une seule execution...
0
HostOfSeraphim Messages postés 6750 Date d'inscription   Statut Contributeur Dernière intervention   1 608
 
Oui. Là, tu traites l'ensemble des fichiers pour chaque fichier... donc chaque fichier est traité autant de fois qu'il y a de fichiers, ce qui est illogique.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
wbailly Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   2
 
D'accord et bien merci en tout cas, je vais devoir les faire un par un, le script perd ici toute son utilité... Damn !
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
il faut faire une boucle sur les fichiers
NBFICHE=1
for FIC in /home/STAGE/newfact/Batiment/* ; do
cat $FIC | sed ':s;N;s/^F/\n/;bs' | sed ':s;N;s/?/\n/;bs' | sed ':s;N;s/?/\n/;bs' | sed ':s;N;s/\n\n\n/\n\n/;bs' > /home/STAGE/newfact/Batiment/$NBFICHE.txt
((NBFICHE++))
done
0
wbailly Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   2
 
Parfait ! Un grand MERCI :D
0