Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
659 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  command system qui ne marche pas avec awk

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

command system qui ne marche pas avec awk

n°1126904
motard75
Posté le 07-04-2009 à 14:30:00  profilanswer
 

Bonjour à toutes et à tous !  :hello:  
 
J'essaye la commande suivante mais ça ne marche pas :
gawk '{
system("echo " $2);
print " -> "$2;
}' F1

 
F1 contient :
1 toto
2 titi
3 [10.1.2.3]

 
Le résultat est le suivant :
toto
 -> toto
titi
 -> titi
2
 -> [10.1.2.3]

 
Je ne sais pas pourquoi il n'arrive pas à prendre en compte "[<adresse IP>]".
 
Vous aurez une idée ...?  
Merci

mood
Publicité
Posté le 07-04-2009 à 14:30:00  profilanswer
 

n°1126907
motard75
Posté le 07-04-2009 à 14:35:44  profilanswer
 

Car en fait c'est comme si je faisait "echo [10.1.2.3]".
Mais je n'arrive pas à intégrer dans la commande "system" les guillements :
echo "[10.1.2.3]"
 
Si quelqu'un peut m'aider...

n°1126909
wedgeant
Da penguin inside
Posté le 07-04-2009 à 14:36:48  profilanswer
 

tu veux faire quoi au final ? [:petrus dei]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°1126911
motard75
Posté le 07-04-2009 à 14:39:10  profilanswer
 

En fait ce que je voulais faire est un "sed" au lieu du "echo" :
 
Je souhaite concrètement faire un "sed" à l'interieur d'un "awk" en prenant en compte les adresses IP.
 
Il faut que j'utilise "sed" dans "awk" même s'il y a d'autre manière de faire car je cherche la substitution la plus rapide.
 
Et pour ça j'essaie de résoudre cet exercice

n°1126915
wedgeant
Da penguin inside
Posté le 07-04-2009 à 14:49:49  profilanswer
 

non, ce que je te demande, c'est ce que tu souhaites obtenir au final par rapport à ton fichier en entrée [:petrus dei]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°1126921
motard75
Posté le 07-04-2009 à 15:05:53  profilanswer
 

Ce que je souhaite avoir c'est :
 
toto
 -> toto
titi
 -> titi
[10.1.2.3]
 -> [10.1.2.3]

n°1127292
matafan
Posté le 09-04-2009 à 13:44:39  profilanswer
 

Le problème ce n'est pas la fonction system(). Ton problème c'est que l'expression "[10.1.2.3]" as un sens particulier pour le shell, et que tu as dans ton répertoire courant un fichier qui s'appelle "2".
 
Awk fait exécuter au shell la commande "echo [10.1.2.3]". Le shell commence faire faire un "pathname expansion" sur l'argument "[10.1.2.3]", qui signifie "Les fichiers nommés 1, ou 0, ou ., ou 2, ou 3. Si tu as un ou plusieurs fichiers qui vérifie ce critère, leur nom remplace l'expression. Dans ton cas tu as un fichier nommé "2", donc le "[10.1.2.3]" est remplacé par "2". Donc le shell exécute "echo 2".
 
Une solution simple est de mettre des quotes autour de l'expression, pour empêher le pathname expansion :

system("echo \"" $2 "\"" )


Message édité par matafan le 09-04-2009 à 13:46:37

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  command system qui ne marche pas avec awk

 

Sujets relatifs
Partimage coté serveur, bash: partimaged: command not foundproblème démarrage pc missing operating system
Cherche NAS bon marché et OSA compliantTaille des fichiers par file system
pc orienté htpc, avec un OS htpc. Une solution qui marche direct?Reseau wifi marche pu'
AIX : problème de droits sur File System [RESOLU]HP recovery system win xp home ! probleme login!
pas de son sur vlc et mplayer mais ca marche sur totem 
Plus de sujets relatifs à : command system qui ne marche pas avec awk


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR