Bonjour,
je suis en train de faire un script sed, et j'aurais besoin
de macros.
J'ai des sous-expressions qui reviennent souvent, et plutôt
que de truffer mes expressions de
(?[+-]?[0-9/])?
je voudrais écrire plutôt
${rat}
avec quelque part
rat=(?[+-]?[0-9/])?
Une idée ? Générer mon fichier sed à partir d'un au tre fichier sed ?
Bonjour,
je suis en train de faire un script sed, et j'aurais besoin
de macros.
J'ai des sous-expressions qui reviennent souvent, et plutôt
que de truffer mes expressions de
(?[+-]?[0-9/])?
je voudrais écrire plutôt
${rat}
avec quelque part
rat=(?[+-]?[0-9/])?
Une idée ? Générer mon fichier sed à partir d'un au tre fichier sed ?
Bonjour,
je suis en train de faire un script sed, et j'aurais besoin
de macros.
J'ai des sous-expressions qui reviennent souvent, et plutôt
que de truffer mes expressions de
(?[+-]?[0-9/])?
je voudrais écrire plutôt
${rat}
avec quelque part
rat=(?[+-]?[0-9/])?
Une idée ? Générer mon fichier sed à partir d'un au tre fichier sed ?
Le 04/05/2010 13:38, Marc Boyer a écrit :Bonjour,
je suis en train de faire un script sed, et j'aurais besoin
de macros.
J'ai des sous-expressions qui reviennent souvent, et plutôt
que de truffer mes expressions de
(?[+-]?[0-9/])?
je voudrais écrire plutôt
${rat}
avec quelque part
rat=(?[+-]?[0-9/])?
Une idée ? Générer mon fichier sed à partir d'un autre fichier sed ?
il est toujours possible de faire sed "..." plutôt que sed '...'
auquel cas, tu peux mettre tes expressions rationnelles sous forme
de variables au niveau shell.
alternative, awk ?
awk -v q="'" '
BEGIN { rat="(?[+-]?[0-9/])?" }
$0 ~ rat { ...; next }
Le 04/05/2010 13:38, Marc Boyer a écrit :
Bonjour,
je suis en train de faire un script sed, et j'aurais besoin
de macros.
J'ai des sous-expressions qui reviennent souvent, et plutôt
que de truffer mes expressions de
(?[+-]?[0-9/])?
je voudrais écrire plutôt
${rat}
avec quelque part
rat=(?[+-]?[0-9/])?
Une idée ? Générer mon fichier sed à partir d'un autre fichier sed ?
il est toujours possible de faire sed "..." plutôt que sed '...'
auquel cas, tu peux mettre tes expressions rationnelles sous forme
de variables au niveau shell.
alternative, awk ?
awk -v q="'" '
BEGIN { rat="(?[+-]?[0-9/])?" }
$0 ~ rat { ...; next }
Le 04/05/2010 13:38, Marc Boyer a écrit :Bonjour,
je suis en train de faire un script sed, et j'aurais besoin
de macros.
J'ai des sous-expressions qui reviennent souvent, et plutôt
que de truffer mes expressions de
(?[+-]?[0-9/])?
je voudrais écrire plutôt
${rat}
avec quelque part
rat=(?[+-]?[0-9/])?
Une idée ? Générer mon fichier sed à partir d'un autre fichier sed ?
il est toujours possible de faire sed "..." plutôt que sed '...'
auquel cas, tu peux mettre tes expressions rationnelles sous forme
de variables au niveau shell.
alternative, awk ?
awk -v q="'" '
BEGIN { rat="(?[+-]?[0-9/])?" }
$0 ~ rat { ...; next }
Cyrille Lefevre<cyrille.lefevre-news% a à ©crit :Le 04/05/2010 13:38, Marc Boyer a écrit :Bonjour,
je suis en train de faire un script sed, et j'aurais besoin
de macros.
alternative, awk ?
awk -v q="'" '
C'est quoi ce q="'" ' ?
BEGIN { rat="(?[+-]?[0-9/])?" }
$0 ~ rat { ...; next }
J'ai pensé à awk, mais je ne l'ai jamais utilisé com me ça. En plus, il
me faut gawk, pour avoir accès à gensub. Car je fait des subs titutions contextuelles,
genre
s/Delta ([0-9]*)/delay(1)/g
Et comme gensub ne modifie
pas son argument, mon code devient un truc genre
{ x = $0
x = gensub( /Delta ([0-9]*)/ , "delay(1)" , "g" )
x = gensub ...
...
}
Et il me faut reprendre mes expressions régulières, car le s conventions ne sont
pas les même.
Et surtout, je n'arrive pas à mettre la variable dans l'express ion régulière...
Soit le fichier test-sub.awk
BEGIN { RAT="[0-9]*" }
{ print "org:" $0
print "RAT=" RAT
print gensub( /Delta *(RAT)/ , "delay(1)" , "g")
print gensub( /Delta *([0-9]*)/ , "delay(1)" , "g")
}
J'en reviens à générer mon fichier sed avec sed...
Cyrille Lefevre<cyrille.lefevre-news%nospam@laposte.net.invalid> a à ©crit :
Le 04/05/2010 13:38, Marc Boyer a écrit :
Bonjour,
je suis en train de faire un script sed, et j'aurais besoin
de macros.
alternative, awk ?
awk -v q="'" '
C'est quoi ce q="'" ' ?
BEGIN { rat="(?[+-]?[0-9/])?" }
$0 ~ rat { ...; next }
J'ai pensé à awk, mais je ne l'ai jamais utilisé com me ça. En plus, il
me faut gawk, pour avoir accès à gensub. Car je fait des subs titutions contextuelles,
genre
s/Delta ([0-9]*)/delay(1)/g
Et comme gensub ne modifie
pas son argument, mon code devient un truc genre
{ x = $0
x = gensub( /Delta ([0-9]*)/ , "delay(\1)" , "g" )
x = gensub ...
...
}
Et il me faut reprendre mes expressions régulières, car le s conventions \ ne sont
pas les même.
Et surtout, je n'arrive pas à mettre la variable dans l'express ion régulière...
Soit le fichier test-sub.awk
BEGIN { RAT="[0-9]*" }
{ print "org:" $0
print "RAT=" RAT
print gensub( /Delta *(RAT)/ , "delay(\1)" , "g")
print gensub( /Delta *([0-9]*)/ , "delay(\1)" , "g")
}
J'en reviens à générer mon fichier sed avec sed...
Cyrille Lefevre<cyrille.lefevre-news% a à ©crit :Le 04/05/2010 13:38, Marc Boyer a écrit :Bonjour,
je suis en train de faire un script sed, et j'aurais besoin
de macros.
alternative, awk ?
awk -v q="'" '
C'est quoi ce q="'" ' ?
BEGIN { rat="(?[+-]?[0-9/])?" }
$0 ~ rat { ...; next }
J'ai pensé à awk, mais je ne l'ai jamais utilisé com me ça. En plus, il
me faut gawk, pour avoir accès à gensub. Car je fait des subs titutions contextuelles,
genre
s/Delta ([0-9]*)/delay(1)/g
Et comme gensub ne modifie
pas son argument, mon code devient un truc genre
{ x = $0
x = gensub( /Delta ([0-9]*)/ , "delay(1)" , "g" )
x = gensub ...
...
}
Et il me faut reprendre mes expressions régulières, car le s conventions ne sont
pas les même.
Et surtout, je n'arrive pas à mettre la variable dans l'express ion régulière...
Soit le fichier test-sub.awk
BEGIN { RAT="[0-9]*" }
{ print "org:" $0
print "RAT=" RAT
print gensub( /Delta *(RAT)/ , "delay(1)" , "g")
print gensub( /Delta *([0-9]*)/ , "delay(1)" , "g")
}
J'en reviens à générer mon fichier sed avec sed...
Le 05/05/2010 10:53, Marc Boyer a écrit :Cyrille Lefevre<cyrille.lefevre-news% a écrit :Le 04/05/2010 13:38, Marc Boyer a écrit :Bonjour,
je suis en train de faire un script sed, et j'aurais besoin
de macros.
<snip>
tu aurais un exemple d'entrée et sortie attendue ?
sinon, qqs pointeurs :
http://awk.info
http://code.google.com/p/lawker/source/browse/#svn/fridge/gawk
=> text/multisub
http://sed.sourceforge.net/
alternative, awk ?
awk -v q="'" '
C'est quoi ce q="'" ' ?
une habitude, si j'ai besoin d'une ', j'utilise q plutôt que '"'"',
plus lisible, non ? :-)
BEGIN { rat="(?[+-]?[0-9/])?" }
$0 ~ rat { ...; next }
J'ai pensé à awk, mais je ne l'ai jamais utilisé comme ça. En plus, il
me faut gawk, pour avoir accès à gensub. Car je fait des substitutions contextuelles,
genre
s/Delta ([0-9]*)/delay(1)/g
Et comme gensub ne modifie
pas son argument, mon code devient un truc genre
{ x = $0
pas nécessaire...
x = gensub( /Delta ([0-9]*)/ , "delay(1)" , "g" )
x = gensub ...
...
}
Et il me faut reprendre mes expressions régulières, car les conventions ne sont
pas les même.
alors en fait, c'est très simple...
si tu es entre /, c'est , si tu es entre ", c'est , simple non ?
le pb étant que l'on ne peut utiliser les / que pour la recherche et
pas pour le remplacement... ce qui oblige effectivement à utiliser une
syntaxe différente selon le contexte !
ex.: sub(/./, "x") vs sub(".", "x")
le plus simple est presque de tout mettre entre " avec 2
Et surtout, je n'arrive pas à mettre la variable dans l'expression régulière...
Soit le fichier test-sub.awk
BEGIN { RAT="[0-9]*" }
{ print "org:" $0
print "RAT=" RAT
print gensub( /Delta *(RAT)/ , "delay(1)" , "g")
pourquoi tu protèges les blancs ? " *" devrait suffire ?
BEGIN { RAT="[0-9]*" }
{ delta = "Delta *(" RAT ")"; delay = "delay(1)"
J'en reviens à générer mon fichier sed avec sed...
c'est une idée aussi, mais tu dois aussi avoir le pb des vs =>
PS : au besoin, penses à -W re-interval sous gawk : x{1,}
Le 05/05/2010 10:53, Marc Boyer a écrit :
Cyrille Lefevre<cyrille.lefevre-news%nospam@laposte.net.invalid> a écrit :
Le 04/05/2010 13:38, Marc Boyer a écrit :
Bonjour,
je suis en train de faire un script sed, et j'aurais besoin
de macros.
<snip>
tu aurais un exemple d'entrée et sortie attendue ?
sinon, qqs pointeurs :
http://awk.info
http://code.google.com/p/lawker/source/browse/#svn/fridge/gawk
=> text/multisub
http://sed.sourceforge.net/
alternative, awk ?
awk -v q="'" '
C'est quoi ce q="'" ' ?
une habitude, si j'ai besoin d'une ', j'utilise q plutôt que '"'"',
plus lisible, non ? :-)
BEGIN { rat="(?[+-]?[0-9/])?" }
$0 ~ rat { ...; next }
J'ai pensé à awk, mais je ne l'ai jamais utilisé comme ça. En plus, il
me faut gawk, pour avoir accès à gensub. Car je fait des substitutions contextuelles,
genre
s/Delta ([0-9]*)/delay(1)/g
Et comme gensub ne modifie
pas son argument, mon code devient un truc genre
{ x = $0
pas nécessaire...
x = gensub( /Delta ([0-9]*)/ , "delay(\1)" , "g" )
x = gensub ...
...
}
Et il me faut reprendre mes expressions régulières, car les conventions \ ne sont
pas les même.
alors en fait, c'est très simple...
si tu es entre /, c'est , si tu es entre ", c'est \, simple non ?
le pb étant que l'on ne peut utiliser les / que pour la recherche et
pas pour le remplacement... ce qui oblige effectivement à utiliser une
syntaxe différente selon le contexte !
ex.: sub(/./, "x") vs sub("\.", "x")
le plus simple est presque de tout mettre entre " avec 2
Et surtout, je n'arrive pas à mettre la variable dans l'expression régulière...
Soit le fichier test-sub.awk
BEGIN { RAT="[0-9]*" }
{ print "org:" $0
print "RAT=" RAT
print gensub( /Delta *(RAT)/ , "delay(\1)" , "g")
pourquoi tu protèges les blancs ? " *" devrait suffire ?
BEGIN { RAT="[0-9]*" }
{ delta = "Delta\ *(" RAT ")"; delay = "delay(\1)"
J'en reviens à générer mon fichier sed avec sed...
c'est une idée aussi, mais tu dois aussi avoir le pb des vs => \
PS : au besoin, penses à -W re-interval sous gawk : x{1,}
Le 05/05/2010 10:53, Marc Boyer a écrit :Cyrille Lefevre<cyrille.lefevre-news% a écrit :Le 04/05/2010 13:38, Marc Boyer a écrit :Bonjour,
je suis en train de faire un script sed, et j'aurais besoin
de macros.
<snip>
tu aurais un exemple d'entrée et sortie attendue ?
sinon, qqs pointeurs :
http://awk.info
http://code.google.com/p/lawker/source/browse/#svn/fridge/gawk
=> text/multisub
http://sed.sourceforge.net/
alternative, awk ?
awk -v q="'" '
C'est quoi ce q="'" ' ?
une habitude, si j'ai besoin d'une ', j'utilise q plutôt que '"'"',
plus lisible, non ? :-)
BEGIN { rat="(?[+-]?[0-9/])?" }
$0 ~ rat { ...; next }
J'ai pensé à awk, mais je ne l'ai jamais utilisé comme ça. En plus, il
me faut gawk, pour avoir accès à gensub. Car je fait des substitutions contextuelles,
genre
s/Delta ([0-9]*)/delay(1)/g
Et comme gensub ne modifie
pas son argument, mon code devient un truc genre
{ x = $0
pas nécessaire...
x = gensub( /Delta ([0-9]*)/ , "delay(1)" , "g" )
x = gensub ...
...
}
Et il me faut reprendre mes expressions régulières, car les conventions ne sont
pas les même.
alors en fait, c'est très simple...
si tu es entre /, c'est , si tu es entre ", c'est , simple non ?
le pb étant que l'on ne peut utiliser les / que pour la recherche et
pas pour le remplacement... ce qui oblige effectivement à utiliser une
syntaxe différente selon le contexte !
ex.: sub(/./, "x") vs sub(".", "x")
le plus simple est presque de tout mettre entre " avec 2
Et surtout, je n'arrive pas à mettre la variable dans l'expression régulière...
Soit le fichier test-sub.awk
BEGIN { RAT="[0-9]*" }
{ print "org:" $0
print "RAT=" RAT
print gensub( /Delta *(RAT)/ , "delay(1)" , "g")
pourquoi tu protèges les blancs ? " *" devrait suffire ?
BEGIN { RAT="[0-9]*" }
{ delta = "Delta *(" RAT ")"; delay = "delay(1)"
J'en reviens à générer mon fichier sed avec sed...
c'est une idée aussi, mais tu dois aussi avoir le pb des vs =>
PS : au besoin, penses à -W re-interval sous gawk : x{1,}