Re: [HS] Script : manque de pratique

2008-05-23 Par sujet Edi Stojicevic
* Michel Grentzinger [EMAIL PROTECTED] [2008-05-22 09:37:40 +0200] 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).
 
 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 [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: [HS] Script : manque de pratique

2008-05-23 Par sujet Michel Grentzinger
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 [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: [HS] Script : manque de pratique

2008-05-23 Par sujet Jacques L'helgoualc'h
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 [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: [HS] Script : manque de pratique

2008-05-23 Par sujet Michel Grentzinger
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 tableau à 
l'origine) avec une formule et uniquement 12 opérations copier-coller pour 
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 [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: [HS] Script : manque de pratique

2008-05-22 Par sujet Steve
Le 22-05-2008, à 09:37:40 +0200, Michel Grentzinger ([EMAIL PROTECTED]) 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 [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: [HS] Script : manque de pratique

2008-05-22 Par sujet Thibaut LE LEVIER

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 [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: [HS] Script : manque de pratique

2008-05-22 Par sujet Jacques L'helgoualc'h
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 [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: [HS] Script : manque de pratique

2008-05-22 Par sujet Michel Grentzinger
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, 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

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 ?

-- 
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 [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: [HS] Script : manque de pratique

2008-05-22 Par sujet Jacques L'helgoualc'h
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 [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]