| Qui est en ligne ? |
| Il y a : 17 utilisateurs en ligne, consultez le détail |
Forum » Serveur, Réseaux et Programmation » Variables et Sed |
Forum modéré par : jblecanard |
| Même auteur |
|
Score ( voter ) : |
|
| Page : [1] |
| Auteur | Message |
|---|---|
|
|
#0 Message posté le : 05-05-2008 à 18:20:02 |
Petit scarabée Forum : Inscrit Association : Arrivé(e) le : 05-05-2008 Nombre de messages : 3 |
Bonjour, voila une partie de mon script shell : if [ -f "${TMPDIR}/nb_votes_${DATE}.lst" ]
then
CONFI="$(sed -n '1p' ${TMPDIR}/nb_votes_old.lst)"
SIMPL="$(sed -n '2p' ${TMPDIR}/nb_votes_old.lst)"
echo 'nombre de vote simple et doubles au '${DATE} >> ${TMPDIR}/stat_${DATE}.lst
cat ${TMPDIR}/nb_votes_${DATE}.lst | sed -e 's/|//g;1 {s/.*/& (contre '"${CONFI}"' en '"${DATEOLD}"')/};2 {s/.*/& (contre '"${SIMPL}"' en '"${DATEOLD}"')/}' >> ${TMPDIR}/stat_${DATE}.lst
cat ${TMPDIR}/nb_votes_${DATE}.lst | sed -e 's/[^[:digit:]]//g' > ${TMPDIR}/nb_votes_old.lst
mais quand je l'execute j'ai l'erreur suivante : sed: -e expression #1, char 37: Unknown option to 's' Je pense que cela a un rapport avec les variables présentes dans l'expression de sed. Avez vous une idée? Merci |
|
|
#1 Message posté le : 05-05-2008 à 19:34:46 |
Hobbit Forum : Modérateur Association : Membre actif Arrivé(e) le : 09-04-2006 Nombre de messages : 1866 |
À vue de nez, je dirais que la date ($DATEOLD par exemple) contient le caractère '/'. Juste avant ce passage, ajoute
set -x et set +x après pour que Bash affiche les commandes avant de les exécuter. Cela nous permettra d'y voir beaucoup plus clair.Tu n'es pas obligé d'utiliser des barres obliques avec sed ; tu peux utiliser le caractère que tu veux, du moment qu'il n'est pas présent dans la chaîne (ou échappé pour sed --- une erreur récurrente consiste à échapper les caractères pour Bash mais pas pour sed). Essaye de changer {s/.*/& (contre '"${CONFI}"' en '"${DATEOLD}"')/};2 {s/.*/& (contre '"${SIMPL}"' en '"${DATEOLD}"')/} en
{s%.*%& (contre '"${CONFI}"' en '"${DATEOLD}"')%};2 {s%.*%& (contre '"${SIMPL}"' en '"${DATEOLD}"')%} --Message édité par Azollyx le 05-05-2008 à 19:35:52-- ------------------------------------- Azollyx Horaldius [http://www.azollyx.eu/] |
|
|
#2 Message posté le : 05-05-2008 à 20:49:46 |
Petit scarabée Forum : Inscrit Association : Arrivé(e) le : 05-05-2008 Nombre de messages : 3 |
Bonjour, set -xv pas de problème si je defini mes variables une a une depuis un shell et que je les execute en mode DEBUG $ CONFI="$(sed -n '1p' /${TMPDIR}/nb_votes_old.lst)" sed -n '1p' /${TMPDIR}/nb_votes_old.lst ++ sed -n 1p //tmp//nb_cotes_old.lst + CONFI=14594 sauf pour $ cat ${TMPDIR}/nb_votes_${DATE}.lst | sed -e 's/|//g;1 {s/.*/& (contre '"${CONFI}"' en '"${DATEOLD"')/};2 {s/.*/& (contre '"${SIMPL}"' en '"${DATEOLD}"')/}' >> ${TMPDIR}/stat_${DATE}.lst + cat /tmp/nb_votes_.lst + sed -e 's/|//g;1 {s/.*/& (contre '"${CONFI}"' en )/};2 {s/.*/& (contre '"${SIMPL}"' en )/}' sed: -e expression #1, char 27: Unknown option to 's' je vais essayé ce que tu dis voir et je te tiens au courant . Merci --Message édité par pcsystemd le 05-05-2008 à 20:52:33-- |
|
|
#3 Message posté le : 05-05-2008 à 22:16:23 |
Hobbit Forum : Modérateur Association : Membre actif Arrivé(e) le : 09-04-2006 Nombre de messages : 1866 |
C'est étrange comme résultat : Bash n'affiche pas le résultat de la substitution des variables... ------------------------------------- Azollyx Horaldius [http://www.azollyx.eu/] |
|
|
#4 Message posté le : 05-05-2008 à 22:46:25 |
Petit scarabée Forum : Inscrit Association : Arrivé(e) le : 05-05-2008 Nombre de messages : 3 |
c'est mon souci justement cette erreur. |
|
|
#5 Message posté le : 06-05-2008 à 12:19:33 |
Petit scarabée Forum : Inscrit Association : Arrivé(e) le : 05-05-2008 Nombre de messages : 3 |
Bon voila c'est résolu cela venait de la version de SED en version 3.2 cela ne fonctionne pas mais en 4 oui. Merci |
|
|
#6 Message posté le : 06-05-2008 à 18:57:48 |
Hobbit Forum : Modérateur Association : Membre actif Arrivé(e) le : 09-04-2006 Nombre de messages : 1866 |
Dans ce cas, tu as un lien en haut à gauche qui te permet de modifier le statut du fil. ------------------------------------- Azollyx Horaldius [http://www.azollyx.eu/] |
| Page : [1] |
Forum » Serveur, Réseaux et Programmation » Variables et Sed |
Forum modéré par : jblecanard |
| Même auteur |
|
Score ( voter ) : |
|
- Petit scarabée : 0 pastille, moins de 100 messages
- Scarabée : 0 pastille, plus de 100 messages
- Hobbit : 1 pastille, plus de 1000 messages
- Naboo : 2 pastilles, plus de 2000 messages
- Elfe : 3 pastilles, plus de 3000 messages
- Jedi : 4 pastilles, plus de 4000 messages
- Maître Jedi : 5 pastilles, plus de 5000 messages