[HS] Script : manque de pratique

Le
Michel Grentzinger
Bonjour,

Ça fait de longs mois que je n'ai plus manipulé de scripts
Je cherche à produire plusieurs fichiers php à partir du mêm=
e modèle en
remplaçant certaines parties bien identifiée (NOM1, NOM2, NOM3, e=
tc).

La source des données à remplacer est issue d'un fichier txt (1 f=
ichier par
modèle). La première ligne comporte la valeur de NOM1, la deuxi=
ème de NOM2,
etc.

Je ne sais pas trop vers quoi m'orienter
Merci pour toute aide !
--
Michel Grentzinger
OpenPGP key ID : B2BAFAFA
Available on http://www.keyserver.net

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Thibaut LE LEVIER
Le #9653571
Michel Grentzinger wrote:
Bonjour,

Ça fait de longs mois que je n'ai plus manipulé de scripts...
Je cherche à produire plusieurs fichiers php à partir du même modèle en
remplaçant certaines parties bien identifiée (NOM1, NOM2, NOM3, etc).




Sed?

La source des données à remplacer est issue d'un fichier txt (1 fichier par
modèle). La première ligne comporte la valeur de NOM1, la deuxième de NOM2,
etc.

Je ne sais pas trop vers quoi m'orienter...
Merci pour toute aide !




--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Steve
Le #9653561
Le 22-05-2008, à 09:37:40 +0200, Michel Grentzinger () a écrit :

Lignes : 30

Bonjour,



Salut,

Ça fait de longs mois que je n'ai plus manipulé de scripts...
Je cherche à produire plusieurs fichiers php à partir du même modèle en
remplaçant certaines parties bien identifiée (NOM1, NOM2, NOM3, etc).

La source des données à remplacer est issue d'un fichier txt (1 fichier par
modèle). La première ligne comporte la valeur de NOM1, la deuxième de NOM2,
etc.

Je ne sais pas trop vers quoi m'orienter...



une boucle contenant un sed ?

Un truc du genre :

for text in `cat infile`
do
string="$text"
sed "s/^/${string}/" $FILE > $NEWFILE
DONE

--
Steve

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Jacques L'helgoualc'h
Le #9653501
Michel Grentzinger a écrit, jeudi 22 mai 2008, à 09:37 :
Bonjour,



bonjour,

Ça fait de longs mois que je n'ai plus manipulé de scripts...
Je cherche à produire plusieurs fichiers php à partir du même modèle en
remplaçant certaines parties bien identifiée (NOM1, NOM2, NOM3, etc).

La source des données à remplacer est issue d'un fichier txt (1 fichier par
modèle). La première ligne comporte la valeur de NOM1, la deuxième de NOM2,
etc.

Je ne sais pas trop vers quoi m'orienter...



Suivant tes habitudes, shell + sed, perl, ... ?

Plutôt Perl à mon goût (à cause des boucles multiples), shell = zsh ou
bash + find pour traiter tout un répertoire.

Sed peut aussi produire un script de conversion noms.sed à partir du
fichier noms.txt :)

Merci pour toute aide !



de rien,
--
Jacques L'helgoualc'h

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Michel Grentzinger
Le #9653261
Le jeudi 22 mai 2008, Steve a écrit :
> Ça fait de longs mois que je n'ai plus manipulé de scripts...
> Je cherche à produire plusieurs fichiers php à partir du mà ªme modèle en
> remplaçant certaines parties bien identifiée (NOM1, NOM2, NOM 3, etc).
>
> La source des données à remplacer est issue d'un fichier txt (1 fichier
> par modèle). La première ligne comporte la valeur de NOM1, la deuxième de
> NOM2, etc.
>
> Je ne sais pas trop vers quoi m'orienter...

une boucle contenant un sed ?

Un truc du genre :

for text in `cat infile`
do
string="$text"
sed "s/^/${string}/" $FILE > $NEWFILE
DONE



Ok je vois un peu mieux mais comment faire pour que au premier passage il m e
remplace NOM1, au 2ème NOM2, etc

Parce que là, il va remplacer la même portion, non ?

--
Michel Grentzinger
OpenPGP key ID : B2BAFAFA
Available on http://www.keyserver.net

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Jacques L'helgoualc'h
Le #9653231
Michel Grentzinger a écrit, jeudi 22 mai 2008, à 20:26 :
Le jeudi 22 mai 2008, Steve a écrit :


[...]
> une boucle contenant un sed ?
>
> Un truc du genre :
>
> for text in `cat infile`
> do
> string="$text"
> sed "s/^/${string}/" $FILE > $NEWFILE
> DONE

Ok je vois un peu mieux mais comment faire pour que au premier passage il me
remplace NOM1, au 2ème NOM2, etc

Parce que là, il va remplacer la même portion, non ?




# En supposant que les NOMs ne contiennent pas de « / »,
# construire d'abord le script sed à partir de la liste
# des noms (dans l'ordre)

<noms.txt sed -e '=' |
sed -e '1~2{s,^,s/NOM,;N;s,n,/,;s,$,/g,}' > noms.sed

# puis l'utiliser

sed -f noms.sed proto.php > resultat.php


Il y a peut-être plus lisible...
--
Jacques L'helgoualc'h

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Edi Stojicevic
Le #9653121
* Michel Grentzinger
Bonjour,

Ça fait de longs mois que je n'ai plus manipulé de scripts...
Je cherche à produire plusieurs fichiers php à partir du même modèle en
remplaçant certaines parties bien identifiée (NOM1, NOM2, NOM3, etc).

La source des données à remplacer est issue d'un fichier txt (1 fichier par
modèle). La première ligne comporte la valeur de NOM1, la deuxième de NOM2,
etc.

Je ne sais pas trop vers quoi m'orienter...
Merci pour toute aide !



Salut,

Il existe une liste de diffusion specialement dédiée au shell scripting
ici :

http://www.debianworld.org/shellscript-fr

@+

--
. ''`. (___/) E d i S T O J I C E V I C
: :' : (='.'=) http://www.debianworld.org
`. `~' (")_(") GPG: 0x1237B032
`-

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Michel Grentzinger
Le #9653111
Le jeudi 22 mai 2008, Jacques L'helgoualc'h a écrit :
Michel Grentzinger a écrit, jeudi 22 mai 2008, à 20:26 :
> Le jeudi 22 mai 2008, Steve a écrit :

[...]

> > une boucle contenant un sed ?
> >
> > Un truc du genre :
> >
> > for text in `cat infile`
> > do
> > string="$text"
> > sed "s/^/${string}/" $FILE > $NEWFILE
> > DONE
>
> Ok je vois un peu mieux mais comment faire pour que au premier passage il
> me remplace NOM1, au 2ème NOM2, etc
>
> Parce que là, il va remplacer la même portion, non ?

# En supposant que les NOMs ne contiennent pas de « / »,
# construire d'abord le script sed à partir de la liste
# des noms (dans l'ordre)

<noms.txt sed -e '=' |
sed -e '1~2{s,^,s/NOM,;N;s,n,/,;s,$,/g,}' > noms.sed

# puis l'utiliser

sed -f noms.sed proto.php > resultat.php


Il y a peut-être plus lisible...



Merci infiniment de ton aide mais je n'ai rien compris à ton script sed ! ;-)
Je crois qu'en tapant les noms à la main j'irai plus vite ...

--
Michel Grentzinger
OpenPGP key ID : B2BAFAFA
Available on http://www.keyserver.net

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Jacques L'helgoualc'h
Le #9653101
Michel Grentzinger a écrit, vendredi 23 mai 2008, à 16:15 :
Le jeudi 22 mai 2008, Jacques L'helgoualc'h a écrit :


[...]
> <noms.txt sed -e '=' |
> sed -e '1~2{s,^,s/NOM,;N;s,n,/,;s,$,/g,}' > noms.sed
>
> # puis l'utiliser
>
> sed -f noms.sed proto.php > resultat.php
>
> Il y a peut-être plus lisible...

Merci infiniment de ton aide mais je n'ai rien compris à ton script sed ! ;-)



Oui, sed n'est pas très facile à (re)lire :/ --- mais il *peut* le faire.

Je crois qu'en tapant les noms à la main j'irai plus vite ...



Ben, tu dois les taper une seule fois avec l'éditeur de ton choix

$ cat <<FIN >noms.txt
]bidule
]chose
]machin
]truc
]FIN



Ensuite, le premier sed numérote les lignes,

$ sed -e '=' <noms.txt
1
bidule
2
chose
3
machin
4
truc

le deuxième fusionne les lignes impaires (numéro) et paires (nom), pour
en faire le script de substitution

$ sed -e '=' <noms.txt | sed -e '1~2{s,^,s/NOM,;N;s,n,/,;s,$,/g,}'
s/NOM1/bidule/g
s/NOM2/chose/g
s/NOM3/machin/g
s/NOM4/truc/g


1~2{ # sur une ligne impaire
s,^,s/NOM, # ajoute « s/NOM » devant le numéro
N # accole la ligne suivante après un n
s,n,/, # remplace ce séparateur par celui de la substitution
s,$,/g, # et termine celle-ci avec l'option.
}

Avec Awk ou Perl on peut faire plus clair (encore que ...).
--
Jacques L'helgoualc'h

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Michel Grentzinger
Le #9653061
Le vendredi 23 mai 2008, Jacques L'helgoualc'h a écrit :
Avec Awk ou Perl on peut faire plus clair (encore que ...).



Merci pour toutes ses explications ! Ça fait tellement longtemps que mon
livre "Scripts sous linux" n'avait pas été ouvert que les pages se sont
détachées...

Finalement, j'ai utilisé OpenOffice (les données étant dans un tabl eau à
l'origine) avec une formule et uniquement 12 opérations copier-coller pou r
plus de 160 couples prénom-nom.

--
Michel Grentzinger
OpenPGP key ID : B2BAFAFA
Available on http://www.keyserver.net

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Publicité
Poster une réponse
Anonyme