variable dans awk - Shell/Batch - Programmation
Marsh Posté le 19-07-2004 à 17:05:53
Je pense qu'il faut que tu le passes en paramètre au AWK déjà, puis tu peux récupérer sa valeur (donc le nom du fichier) dans la variable ARGV, qui est un tableau dont les indices vont de 0 à ARGC-1.
Parceque là j'ai pas trop regardé le code du awk mais si tu lui passes pas de fichier en paramètre je vois mal ce qu'il peut faire? (les $0 concernant la ligne courante du fichier traité).
Marsh Posté le 19-07-2004 à 17:06:31
Je viens de voir que la variable FILENAME contient aussi le nom du fichier passé en paramètre.
Marsh Posté le 19-07-2004 à 17:47:12
En effet avec la variable FILENAME je recupère bien le fichier mais cela ne me convient pas en fait je voudrait recuperer le chemin complet où je vais chercher mon fichier
En affectant PWD a une variable, puis en passant cette variable dans le awk cela devrait marcher mais je ne sais pas utiliser ARGV
Pilou51 tu sais toi ??
Marsh Posté le 20-07-2004 à 16:00:52
Est-il possible d'inclure une variable dans une commande sed comme celle qui suit ??
sed 's/\./$toto/' $fic
Marsh Posté le 21-07-2004 à 04:02:10
Tu peux toujours utiliser les double quotes, auquel cas $toto sera evalué avant même d'être passé à sed.
Marsh Posté le 21-07-2004 à 09:37:47
il ya plus simple, il suffit de fermer et de réouvrir les quotes dans awk :
$TOTO="hop"; awk 'BEGIN { print "'$TOTO'"; };' |
Marsh Posté le 21-07-2004 à 11:38:10
Merci pour vos réponse mais je comprend pas pourquoi y'a pas moyen de passer une variable dans sed
toto=`PWD`
sed 's/\./"$toto"/' < $fic1 > $fic2
j'ai essayé tout un tas de truc les quote simple double ect...mais rien a faire
-
Marsh Posté le 21-07-2004 à 11:39:31
même chose :
TOTO="hop"; echo hiphophip | sed -e 's/'$TOTO'/hip/' |
Marsh Posté le 21-07-2004 à 11:46:42
bobuse,
voila ce que j'obtient avec ce code
toto=`PWD`
sed 's/\./'$toto'/' < $fic > ./lisMod.txt
toto=LDRAD_DSW/Ds2m/Ds2mA100
+ sed s/\./LDRAD_DSW/Ds2m/Ds2mA100/
sed: garbage after command
Marsh Posté le 21-07-2004 à 13:48:23
sed -e donne le même resultat
+ + PWD
toto=LDRAD_DSW/Ds2m/Ds2mA100
+ sed -e s/\./LDRAD_DSW/Ds2m/Ds2mA100/
sed: garbage after command
+ exit
Marsh Posté le 21-07-2004 à 15:55:31
et essaie juste ma commande :
TOTO="hop"; echo hiphophip | sed -e 's/'$TOTO'/hip/' |
Marsh Posté le 23-07-2004 à 03:43:17
Dans ce cas tu peux carrément virer les quotes, elles ne servent à rien.
Marsh Posté le 19-07-2004 à 16:50:36
Comment faire pour que awk reconnaisse cette variable car dans le cas présent, l'affichage de nomfic ne s'effectue pas
nomfic=`basename $ligne`nomchemin=`dirname $ligne`
awk '
BEGIN {flag=1;cpt=0}
$0 ~ /\/\*/ && $0 !~ /\*\// {
flag = 0
}
$0 ~ /\*\// && $0 !~ /\/\*/ {
flag = 1
next
}
$0 !~ /^[ \t]*\/\*.*\*\/[ \t]*$/ && $0 !~ /^\/\*.*\*\/$/ && $0 !~ /^.*\/\// && $0 !~ /^;/ && $1 !~ /^\@\"/ && $0 !~ /^[ \t]*$/ && flag != 0 {
print $0 > "./resultat.txt"
cpt++
}
END {print $nomfic cpt}' $ligne
Merci