Problème script SHELL

Fermé
wbailly Messages postés 63 Date d'inscription jeudi 3 juin 2010 Statut Membre Dernière intervention 23 juin 2010 - 3 juin 2010 à 09:29
wbailly Messages postés 63 Date d'inscription jeudi 3 juin 2010 Statut Membre Dernière intervention 23 juin 2010 - 3 juin 2010 à 14:34
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 jeudi 3 juin 2010 Statut Membre Dernière intervention 23 juin 2010 2
3 juin 2010 à 10:58
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 jeudi 3 juin 2010 Statut Membre Dernière intervention 23 juin 2010 2
3 juin 2010 à 11:44
J'ai collé tout le monde ou quoi ? :)
0
HostOfSeraphim Messages postés 6750 Date d'inscription jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 608
3 juin 2010 à 11:53
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 jeudi 3 juin 2010 Statut Membre Dernière intervention 23 juin 2010 2
3 juin 2010 à 12:00
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 jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 608
3 juin 2010 à 12:03
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 jeudi 3 juin 2010 Statut Membre Dernière intervention 23 juin 2010 2
3 juin 2010 à 12:06
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 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 622
3 juin 2010 à 14:17
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 jeudi 3 juin 2010 Statut Membre Dernière intervention 23 juin 2010 2
3 juin 2010 à 14:34
Parfait ! Un grand MERCI :D
0