j ai fait un petit script pour ajouter une ligne en dessous d une
autre dans un source C. la ligne repere est de la forme:
{ID_LEX_CIRCUM, &state_022},
et je souhaite ajouter:
{ID_LEX_PERCENT, &state_022},
le numero d etat devant rester le meme.
j ai ecrit ca:
#! /bin/sh
for i in `grep CIRCUM *.c | cut -d':' -f1`
do
echo $i
id=`grep CIRCUM $i | awk '{print $2}'`
line=`grep -n CIRCUM $i | cut -d':' -f1`
echo STATE: $i:$line
sed -e "a/\(ID_LEX_CIRCUM\)/pouet\1pouet/g" $i
done
mais il m affiche ca:
...
/(ID_LEX_CIRCUM)/pouet1pouet/g
....
alors que je voudrais:
pouetID_LEX_CIRCUMpouet
un petit coup de pouce serait le bienvenu.
merci d avance,
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pascal Bourguignon
Guillaume Desticourt writes:
bonjour,
j ai fait un petit script pour ajouter une ligne en dessous d une autre dans un source C. la ligne repere est de la forme: {ID_LEX_CIRCUM, &state_022}, et je souhaite ajouter: {ID_LEX_PERCENT, &state_022}, le numero d etat devant rester le meme. j ai ecrit ca: #! /bin/sh
for i in `grep CIRCUM *.c | cut -d':' -f1` do echo $i id=`grep CIRCUM $i | awk '{print $2}'` line=`grep -n CIRCUM $i | cut -d':' -f1` echo STATE: $i:$line sed -e "a/(ID_LEX_CIRCUM)/pouet1pouet/g" $i done
mais il m affiche ca: ... /(ID_LEX_CIRCUM)/pouet1pouet/g .... alors que je voudrais: pouetID_LEX_CIRCUMpouet
un petit coup de pouce serait le bienvenu. merci d avance,
-- __Pascal_Bourguignon__ . * * . * .* . http://www.informatimago.com/ . * . .* * . . / () . * Living free in Alaska or in Siberia, a . . / . . * . grizzli's life expectancy is 35 years, .*. / * . . but no more than 8 years in captivity. . /* o . http://www.theadvocates.org/ * '''||''' . SCO Spam-magnet: ******************
j ai fait un petit script pour ajouter une ligne en dessous d une
autre dans un source C. la ligne repere est de la forme:
{ID_LEX_CIRCUM, &state_022},
et je souhaite ajouter:
{ID_LEX_PERCENT, &state_022},
le numero d etat devant rester le meme.
j ai ecrit ca:
#! /bin/sh
for i in `grep CIRCUM *.c | cut -d':' -f1`
do
echo $i
id=`grep CIRCUM $i | awk '{print $2}'`
line=`grep -n CIRCUM $i | cut -d':' -f1`
echo STATE: $i:$line
sed -e "a/(ID_LEX_CIRCUM)/pouet1pouet/g" $i
done
mais il m affiche ca:
...
/(ID_LEX_CIRCUM)/pouet1pouet/g
....
alors que je voudrais:
pouetID_LEX_CIRCUMpouet
un petit coup de pouce serait le bienvenu.
merci d avance,
--
__Pascal_Bourguignon__ . * * . * .* .
http://www.informatimago.com/ . * . .*
* . . / () . *
Living free in Alaska or in Siberia, a . . / . . * .
grizzli's life expectancy is 35 years, .*. / * . .
but no more than 8 years in captivity. . /* o .
http://www.theadvocates.org/ * '''||''' .
SCO Spam-magnet: postmaster@sco.com ******************
j ai fait un petit script pour ajouter une ligne en dessous d une autre dans un source C. la ligne repere est de la forme: {ID_LEX_CIRCUM, &state_022}, et je souhaite ajouter: {ID_LEX_PERCENT, &state_022}, le numero d etat devant rester le meme. j ai ecrit ca: #! /bin/sh
for i in `grep CIRCUM *.c | cut -d':' -f1` do echo $i id=`grep CIRCUM $i | awk '{print $2}'` line=`grep -n CIRCUM $i | cut -d':' -f1` echo STATE: $i:$line sed -e "a/(ID_LEX_CIRCUM)/pouet1pouet/g" $i done
mais il m affiche ca: ... /(ID_LEX_CIRCUM)/pouet1pouet/g .... alors que je voudrais: pouetID_LEX_CIRCUMpouet
un petit coup de pouce serait le bienvenu. merci d avance,
-- __Pascal_Bourguignon__ . * * . * .* . http://www.informatimago.com/ . * . .* * . . / () . * Living free in Alaska or in Siberia, a . . / . . * . grizzli's life expectancy is 35 years, .*. / * . . but no more than 8 years in captivity. . /* o . http://www.theadvocates.org/ * '''||''' . SCO Spam-magnet: ******************
Guillaume Desticourt
c est un peu mysterieux comme ca, mais je vais y reflechir. (comprendre comparer avec la doc.) merci pour ton aide,
-- Guillaume Desticourt
c est un peu mysterieux comme ca, mais je vais y
reflechir. (comprendre comparer avec la doc.)
merci pour ton aide,
c est un peu mysterieux comme ca, mais je vais y reflechir. (comprendre comparer avec la doc.) merci pour ton aide,
-- Guillaume Desticourt
Pascal Bourguignon
Guillaume Desticourt writes:
c est un peu mysterieux comme ca, mais je vais y reflechir. (comprendre comparer avec la doc.) merci pour ton aide,
Sed peut prendre des commandes sur plusieurs lignes (ou plusieurs arguments -e). Les accolades servent à activer plusieurs commandes sur une "adresse" (la regexp /CIRCUM/).
[ tmp]$ cat toto.sed /CIRCUM/{ p s/({ID_[^_]*)_CIRCUM(,.*},)/1_PERCENT2/ }
signifie: sur toutes les lignes où on trouve CIRCUM (/CIRCUM/), imprimer la ligne (p), puis substituer de '{ID_' à '},' (en mémorisant ce qu'il y a avant et après '_CIRCUM' ( ( et ) ), par ce qu'il y avait avant, '_PERCENT' et ce qu'il y avait après.
Comme on n'a pas mis d'option -n à sed, il fini par imprimer la ligne ainsi modifiée, et sinon imprime toutes les autres lignes où il n'y a pas CIRCUM.
-- __Pascal_Bourguignon__ . * * . * .* . http://www.informatimago.com/ . * . .* There is no worse tyranny than to force * . . / () . * a man to pay for what he does not . . / . . * . want merely because you think it .*. / * . . would be good for him. -- Robert Heinlein . /* o . http://www.theadvocates.org/ * '''||''' . SCO Spam-magnet: ******************
c est un peu mysterieux comme ca, mais je vais y
reflechir. (comprendre comparer avec la doc.)
merci pour ton aide,
Sed peut prendre des commandes sur plusieurs lignes (ou plusieurs
arguments -e). Les accolades servent à activer plusieurs commandes
sur une "adresse" (la regexp /CIRCUM/).
[pascal@thalassa tmp]$ cat toto.sed
/CIRCUM/{
p
s/({ID_[^_]*)_CIRCUM(,.*},)/1_PERCENT2/
}
signifie: sur toutes les lignes où on trouve CIRCUM (/CIRCUM/),
imprimer la ligne (p), puis substituer de '{ID_' à '},' (en mémorisant
ce qu'il y a avant et après '_CIRCUM' ( ( et ) ), par ce qu'il y
avait avant, '_PERCENT' et ce qu'il y avait après.
Comme on n'a pas mis d'option -n à sed, il fini par imprimer la ligne
ainsi modifiée, et sinon imprime toutes les autres lignes où il n'y a
pas CIRCUM.
--
__Pascal_Bourguignon__ . * * . * .* .
http://www.informatimago.com/ . * . .*
There is no worse tyranny than to force * . . / () . *
a man to pay for what he does not . . / . . * .
want merely because you think it .*. / * . .
would be good for him. -- Robert Heinlein . /* o .
http://www.theadvocates.org/ * '''||''' .
SCO Spam-magnet: postmaster@sco.com ******************
c est un peu mysterieux comme ca, mais je vais y reflechir. (comprendre comparer avec la doc.) merci pour ton aide,
Sed peut prendre des commandes sur plusieurs lignes (ou plusieurs arguments -e). Les accolades servent à activer plusieurs commandes sur une "adresse" (la regexp /CIRCUM/).
[ tmp]$ cat toto.sed /CIRCUM/{ p s/({ID_[^_]*)_CIRCUM(,.*},)/1_PERCENT2/ }
signifie: sur toutes les lignes où on trouve CIRCUM (/CIRCUM/), imprimer la ligne (p), puis substituer de '{ID_' à '},' (en mémorisant ce qu'il y a avant et après '_CIRCUM' ( ( et ) ), par ce qu'il y avait avant, '_PERCENT' et ce qu'il y avait après.
Comme on n'a pas mis d'option -n à sed, il fini par imprimer la ligne ainsi modifiée, et sinon imprime toutes les autres lignes où il n'y a pas CIRCUM.
-- __Pascal_Bourguignon__ . * * . * .* . http://www.informatimago.com/ . * . .* There is no worse tyranny than to force * . . / () . * a man to pay for what he does not . . / . . * . want merely because you think it .*. / * . . would be good for him. -- Robert Heinlein . /* o . http://www.theadvocates.org/ * '''||''' . SCO Spam-magnet: ******************
Sebastien Moretti
bonjour, Bonjour,
j ai fait un petit script pour ajouter une ligne en dessous d une autre dans un source C. la ligne repere est de la forme: {ID_LEX_CIRCUM, &state_022}, et je souhaite ajouter: {ID_LEX_PERCENT, &state_022}, le numero d etat devant rester le meme. j ai ecrit ca: #! /bin/sh
for i in `grep CIRCUM *.c | cut -d':' -f1` do echo $i id=`grep CIRCUM $i | awk '{print $2}'` line=`grep -n CIRCUM $i | cut -d':' -f1` echo STATE: $i:$line sed -e "a/(ID_LEX_CIRCUM)/pouet1pouet/g" $i done
mais il m affiche ca: ... /(ID_LEX_CIRCUM)/pouet1pouet/g .... alors que je voudrais: pouetID_LEX_CIRCUMpouet
un petit coup de pouce serait le bienvenu. merci d avance,
Lorsque sed foire, utilise les ' au lieu des ". Les quotes simples prennnent mieux en compte les (.*) et les 1 correspondants.
j ai fait un petit script pour ajouter une ligne en dessous d une
autre dans un source C. la ligne repere est de la forme:
{ID_LEX_CIRCUM, &state_022},
et je souhaite ajouter:
{ID_LEX_PERCENT, &state_022},
le numero d etat devant rester le meme.
j ai ecrit ca:
#! /bin/sh
for i in `grep CIRCUM *.c | cut -d':' -f1`
do
echo $i
id=`grep CIRCUM $i | awk '{print $2}'`
line=`grep -n CIRCUM $i | cut -d':' -f1`
echo STATE: $i:$line
sed -e "a/(ID_LEX_CIRCUM)/pouet1pouet/g" $i
done
mais il m affiche ca:
...
/(ID_LEX_CIRCUM)/pouet1pouet/g
....
alors que je voudrais:
pouetID_LEX_CIRCUMpouet
un petit coup de pouce serait le bienvenu.
merci d avance,
Lorsque sed foire, utilise les ' au lieu des ".
Les quotes simples prennnent mieux en compte les (.*) et les 1
correspondants.
j ai fait un petit script pour ajouter une ligne en dessous d une autre dans un source C. la ligne repere est de la forme: {ID_LEX_CIRCUM, &state_022}, et je souhaite ajouter: {ID_LEX_PERCENT, &state_022}, le numero d etat devant rester le meme. j ai ecrit ca: #! /bin/sh
for i in `grep CIRCUM *.c | cut -d':' -f1` do echo $i id=`grep CIRCUM $i | awk '{print $2}'` line=`grep -n CIRCUM $i | cut -d':' -f1` echo STATE: $i:$line sed -e "a/(ID_LEX_CIRCUM)/pouet1pouet/g" $i done
mais il m affiche ca: ... /(ID_LEX_CIRCUM)/pouet1pouet/g .... alors que je voudrais: pouetID_LEX_CIRCUMpouet
un petit coup de pouce serait le bienvenu. merci d avance,
Lorsque sed foire, utilise les ' au lieu des ". Les quotes simples prennnent mieux en compte les (.*) et les 1 correspondants.
-- __Pascal_Bourguignon__ . * * . * .* . http://www.informatimago.com/ . * . .* There is no worse tyranny than to force * . . / () . * a man to pay for what he does not . . / . . * . want merely because you think it .*. / * . . would be good for him. -- Robert Heinlein . /* o . http://www.theadvocates.org/ * '''||''' . SCO Spam-magnet: ******************
--
__Pascal_Bourguignon__ . * * . * .* .
http://www.informatimago.com/ . * . .*
There is no worse tyranny than to force * . . / () . *
a man to pay for what he does not . . / . . * .
want merely because you think it .*. / * . .
would be good for him. -- Robert Heinlein . /* o .
http://www.theadvocates.org/ * '''||''' .
SCO Spam-magnet: postmaster@sco.com ******************
-- __Pascal_Bourguignon__ . * * . * .* . http://www.informatimago.com/ . * . .* There is no worse tyranny than to force * . . / () . * a man to pay for what he does not . . / . . * . want merely because you think it .*. / * . . would be good for him. -- Robert Heinlein . /* o . http://www.theadvocates.org/ * '''||''' . SCO Spam-magnet: ******************
Guillaume Desticourt
Pascal Bourguignon writes:
Guillaume Desticourt writes:
c est un peu mysterieux comme ca, mais je vais y reflechir. (comprendre comparer avec la doc.) merci pour ton aide,
Sed peut prendre des commandes sur plusieurs lignes (ou plusieurs arguments -e). Les accolades servent à activer plusieurs commandes sur une "adresse" (la regexp /CIRCUM/).
[ tmp]$ cat toto.sed /CIRCUM/{ p s/({ID_[^_]*)_CIRCUM(,.*},)/1_PERCENT2/ }
signifie: sur toutes les lignes où on trouve CIRCUM (/CIRCUM/), imprimer la ligne (p), puis substituer de '{ID_' à '},' (en mémorisant ce qu'il y a avant et après '_CIRCUM' ( ( et ) ), par ce qu'il y avait avant, '_PERCENT' et ce qu'il y avait après.
merci pour les explications.
maintenant j ai vu sur shellunix.com qu il existait la commande 'a' pour ajouter quelque chose a la ligne suivante. est il possible d ajouter une chaine n lignes plus loin? (au hasard deux lignes en dessous de struct struc_s truc ;)
c est un peu mysterieux comme ca, mais je vais y
reflechir. (comprendre comparer avec la doc.)
merci pour ton aide,
Sed peut prendre des commandes sur plusieurs lignes (ou plusieurs
arguments -e). Les accolades servent à activer plusieurs commandes
sur une "adresse" (la regexp /CIRCUM/).
[pascal@thalassa tmp]$ cat toto.sed
/CIRCUM/{
p
s/({ID_[^_]*)_CIRCUM(,.*},)/1_PERCENT2/
}
signifie: sur toutes les lignes où on trouve CIRCUM (/CIRCUM/),
imprimer la ligne (p), puis substituer de '{ID_' à '},' (en mémorisant
ce qu'il y a avant et après '_CIRCUM' ( ( et ) ), par ce qu'il y
avait avant, '_PERCENT' et ce qu'il y avait après.
merci pour les explications.
maintenant j ai vu sur shellunix.com qu il existait la commande 'a' pour
ajouter quelque chose a la ligne suivante. est il possible d ajouter
une chaine n lignes plus loin?
(au hasard deux lignes en dessous de struct struc_s truc ;)
c est un peu mysterieux comme ca, mais je vais y reflechir. (comprendre comparer avec la doc.) merci pour ton aide,
Sed peut prendre des commandes sur plusieurs lignes (ou plusieurs arguments -e). Les accolades servent à activer plusieurs commandes sur une "adresse" (la regexp /CIRCUM/).
[ tmp]$ cat toto.sed /CIRCUM/{ p s/({ID_[^_]*)_CIRCUM(,.*},)/1_PERCENT2/ }
signifie: sur toutes les lignes où on trouve CIRCUM (/CIRCUM/), imprimer la ligne (p), puis substituer de '{ID_' à '},' (en mémorisant ce qu'il y a avant et après '_CIRCUM' ( ( et ) ), par ce qu'il y avait avant, '_PERCENT' et ce qu'il y avait après.
merci pour les explications.
maintenant j ai vu sur shellunix.com qu il existait la commande 'a' pour ajouter quelque chose a la ligne suivante. est il possible d ajouter une chaine n lignes plus loin? (au hasard deux lignes en dessous de struct struc_s truc ;)