Re: [HS] Script : manque de pratique
* 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
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
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
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
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
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
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
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
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]