echo "--local" | awk -v str="--lo" '{ if ( $1 ~ /^str/ ) print "Match
found" ; else print "No match found" }' me dit que No match found,
qu'est ce qui ne vas pas dans la condition if ?
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
xtof.pernod
Lie Algebra a fait rien qu'à écrire :
Bonjour,
echo "--local" | awk -v str="--lo" '{ if ( $1 ~ /^str/ ) print "Match found" ; else print "No match found" }' me dit que No match found, qu'est ce qui ne vas pas dans la condition if ?
'str' n'est pas pris comme nom de variable, mais comme composant d'une pattern. Il n'est donc pas substitué par la valeur de la variable str.
E.S
Suggestion:
$ echo "--local" | var="--lo" awk '{ if ( $1 ~ /^'$var'/ ) print "Match"; }' - Match
..mais doit y a voir moyen de faire mieux, parce que ça, à maintenir..
-- christophe.
Lie Algebra a fait rien qu'à écrire :
Bonjour,
echo "--local" | awk -v str="--lo" '{ if ( $1 ~ /^str/ ) print "Match
found" ; else print "No match found" }' me dit que No match found,
qu'est ce qui ne vas pas dans la condition if ?
'str' n'est pas pris comme nom de variable, mais comme composant d'une pattern.
Il n'est donc pas substitué par la valeur de la variable str.
E.S
Suggestion:
$ echo "--local" | var="--lo" awk '{ if ( $1 ~ /^'$var'/ ) print "Match"; }' -
Match
..mais doit y a voir moyen de faire mieux, parce que ça, à maintenir..
echo "--local" | awk -v str="--lo" '{ if ( $1 ~ /^str/ ) print "Match found" ; else print "No match found" }' me dit que No match found, qu'est ce qui ne vas pas dans la condition if ?
'str' n'est pas pris comme nom de variable, mais comme composant d'une pattern. Il n'est donc pas substitué par la valeur de la variable str.
E.S
Suggestion:
$ echo "--local" | var="--lo" awk '{ if ( $1 ~ /^'$var'/ ) print "Match"; }' - Match
..mais doit y a voir moyen de faire mieux, parce que ça, à maintenir..
-- christophe.
Lie Algebra
xtof.pernod wrote:
Suggestion:
$ echo "--local" | var="--lo" awk '{ if ( $1 ~ /^'$var'/ ) print "Match"; }' - Match
..mais doit y a voir moyen de faire mieux, parce que ça, à maintenir..
En passant la regexp en paramètre : echo "--local" | awk -v str=^"--lo" '{ if ( $1 ~ str ) print "Match found" }' cela fonctionne mais du même coup, je ne peux plus utiliser la valorisation de str dans la suite du script sans avoir à extraire le '^'...
E.S
xtof.pernod wrote:
Suggestion:
$ echo "--local" | var="--lo" awk '{ if ( $1 ~ /^'$var'/ ) print
"Match"; }' -
Match
..mais doit y a voir moyen de faire mieux, parce que ça, à maintenir..
En passant la regexp en paramètre :
echo "--local" | awk -v str=^"--lo" '{ if ( $1 ~ str ) print "Match
found" }' cela fonctionne mais du même coup, je ne peux plus utiliser
la valorisation de str dans la suite du script sans avoir à extraire
le '^'...
$ echo "--local" | var="--lo" awk '{ if ( $1 ~ /^'$var'/ ) print "Match"; }' - Match
..mais doit y a voir moyen de faire mieux, parce que ça, à maintenir..
En passant la regexp en paramètre : echo "--local" | awk -v str=^"--lo" '{ if ( $1 ~ str ) print "Match found" }' cela fonctionne mais du même coup, je ne peux plus utiliser la valorisation de str dans la suite du script sans avoir à extraire le '^'...
E.S
Stephane CHAZELAS
2008-11-09, 17:39(+01), Lie Algebra:
Bonjour,
echo "--local" | awk -v str="--lo" '{ if ( $1 ~ /^str/ ) print "Match found" ; else print "No match found" }' me dit que No match found, qu'est ce qui ne vas pas dans la condition if ?
A noter que la syntaxe -v "var=value" expand les n, t, a... Pour eviter cela on peut utiliser ARGV ou ENVIRON.
if expr x"--local" : x"--lo" > /dev/null then echo match else echo match fi
(expr reconnait les BRE et awk les ERE).
Sinon, tout simplement:
awk ' BEGIN { if (ARGV[1] ~ "^" ARGV[2]) print "match" else print "no match" exit }' --local --lo
Ou pour un cas aussi simple:
case --local in (--lo*) echo match;; (*) echo no match;; esac
-- Stéphane
2008-11-09, 17:39(+01), Lie Algebra:
Bonjour,
echo "--local" | awk -v str="--lo" '{ if ( $1 ~ /^str/ ) print "Match
found" ; else print "No match found" }' me dit que No match found,
qu'est ce qui ne vas pas dans la condition if ?
echo "--local" | awk -v str="--lo" '{ if ( $1 ~ /^str/ ) print "Match found" ; else print "No match found" }' me dit que No match found, qu'est ce qui ne vas pas dans la condition if ?
A noter que la syntaxe -v "var=value" expand les n, t, a... Pour eviter cela on peut utiliser ARGV ou ENVIRON.
if expr x"--local" : x"--lo" > /dev/null then echo match else echo match fi
(expr reconnait les BRE et awk les ERE).
Sinon, tout simplement:
awk ' BEGIN { if (ARGV[1] ~ "^" ARGV[2]) print "match" else print "no match" exit }' --local --lo
Ou pour un cas aussi simple:
case --local in (--lo*) echo match;; (*) echo no match;; esac
-- Stéphane
naddy
Lie Algebra wrote:
En passant la regexp en paramètre : echo "--local" | awk -v str=^"--lo" '{ if ( $1 ~ str ) print "Match found" }' cela fonctionne mais du même coup, je ne peux plus utiliser la valorisation de str dans la suite du script sans avoir à extraire le '^'...
En passant la regexp en paramètre :
echo "--local" | awk -v str=^"--lo" '{ if ( $1 ~ str ) print "Match
found" }' cela fonctionne mais du même coup, je ne peux plus utiliser
la valorisation de str dans la suite du script sans avoir à extraire
le '^'...
En passant la regexp en paramètre : echo "--local" | awk -v str=^"--lo" '{ if ( $1 ~ str ) print "Match found" }' cela fonctionne mais du même coup, je ne peux plus utiliser la valorisation de str dans la suite du script sans avoir à extraire le '^'...