Rechercher : dans
Par :

Shell to awk

Dernière réponse le 6 avr 2007 à 13:57:16 titexe, le 4 avr 2007 à 13:18:26 
 Signaler ce message aux modérateurs

Bonjour,

J’ai un script shell qui fait un control d'une ligne avec un grep et après la commande écho si le contrôle est OK.

Je veux créer le même script en awk , mais je sais pas comment faire .?

Détail du script shell :

#!/bin/ksh

grep ""$answerq"_"$answercode":"$answeruser"" /users2/test/HAB_PART.txt 1>/dev/null
rc=$?
if [ "$rc" != "0" ]
then
echo ""$answerq"_"$answercode":"$answeruser"" >> /users2/test/HAB_PART.txt
else
echo ""$answerq"_"$answercode":"$answeruser" at HAB_PART.txt Already exists"
fi

grep "$answeruser:$answerprot" /users2/test/HAB_PROT.txt 1>/dev/null
rc=$?
if [ "$rc" != "0" ]
then
echo "$answeruser:$answerprot" >> /users2/test/PROT.txt
else
echo "$answeruser:$answerprot at HAB_PROT.cfg Already exists"
fi

Merci de m'aider a créer ce script awk,

Merci d'avance,

Cordialement,

Abdel

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « shell to awk » dans :
Guide d'utilisation du Shell pour débutant VoirSHELL BASH - GUIDE D'UTILISATION - Niveau Débutant Introduction Appel aux membres CCM II. C'est quoi le shell ? III. Comment accéder à la ligne de commande IV. Les consoles virtuelles Exemple : Accéder à la console 3 depuis l'interface...
[Shell] Transferer des fichiers via ssh VoirSSH - Secure SHell Utilisation Informations complémentaires LOGICIELS Sous Linux/Unix Sous Windows Avertissement Utilisation SSH permet d'utiliser des pipelines de commandes, et d'utiliser des tubes d'entrées/sorties comme toute...
[Shell] Tester une variable numérique VoirTester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à...
Télécharger Free PDF to Word Converter VoirLes documents PDF sont certes les plus sur et les plus stables pour les transferts, puisqu'ils ne peuvent pas être modifiés. Néanmoins, parfois on a besoin des données contenues dans un document PDF que l'on voudrait éditer ou modifier. Free PDF to...
Télécharger Free PowerPoint/PPT to Pdf Converter VoirIl est fréquent de convertir les fichiers Word, Excel ou des images au format PDF. Mais il n'est pas très courant de convertir un fichier PowerPoint au format PDF. PowerPoint/PPT to Pdf Converter est une application permettant de convertir facilement...
Systèmes UNIX - Le shell VoirIntroduction au shell L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire entre le système...
Linux - Le shell VoirIntroduction au shell L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire le système...
Réseau d'égal à égal (peer to peer) VoirPrésentation de l'architecture d'égal à égal Dans une architecture d'égal à égal (appelée aussi « poste à poste », en anglais peer to peer, notée P2P), contrairement à une architecture de réseau de type client/serveur, il n'y a pas de serveur...

1

titexe, le 4 avr 2007 à 17:34:56

Merci de m'aider a résoudre ce probléme , c est trés critique !!!

Merci d'avance

Répondre à titexe

2

jipicy, le 5 avr 2007 à 14:29:48

Salut,

awk '/motif/ { print $0 }' fichier
Ce qui donne pour ton 1er exemple :
awk '/\"\$answerq\"_\"\$answercode\":\"\$answeruser\"/ { print $0 }' fichier
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

3

titexe, le 5 avr 2007 à 15:21:32

Bonjour,

Merci pour votre réponse,

est ce que je peux insérer cette commande au sein de mon script.awk , parceque j'ai déja ce script , je veux juste insérer cette partie :

je l'ai déja fait , mais il m'affiche un message d'erreur :

if ($1 == "OB")
{

awk '/\"\$1\"_\"\$2\":\"\$3\"/ { print $0 }' /users2/test/" $7 ".cfg
if ($0 == "0")
{
system("echo " $1 "_" $2 ":" $3 " >> /users2/pfe/Gateway_DR/user_cfg/" $7 ".cfg ")
}
else
{
print " existant "
}
}

ce script.awk je le lance de cette maniére :

awk -f /users2/test/script.awk /users2/test/vfd.cfg

Merci d'avance et merci pour votre réactivité ,

Cdlt,

Abdel

Répondre à titexe

4

jipicy, le 5 avr 2007 à 15:42:21

Re-

Ton problème là c'est le fait d'utiliser des variables (ou paramètres) externes (shell) à awk. Dans ce cas, il faut utiliser la syntaxe suivante :

 awk '/\"\'$1'\"_\"\'$2'\":\"\'$3'\"/ { print $0 }' 
Il faut en fait exclure la(es) variable(s) de la commande awk. La commande awk étant délimitée par des quotes, il suffit de refermer cette commande avant la variable et de la rouvrir derrière.
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

5

titexe, le 5 avr 2007 à 17:46:17

J'ai apporté les modifications que vous m'avez demandé, mais malgré ca , il m'affiche des messages d'erreurs en éxcecutant le script :

/users2/test > sh VFD1.sh
syntax error The source line is 76.
The error context is
awk >>> ' <<< /\"\'$1'\"_\"\'$2'\":\"\'$3'\"/ { print $0 }' /users2/test/" $7 ".cfg
awk: The statement cannot be correctly parsed.
The source line is 76.
syntax error The source line is 80.

le contenu du VFD1.sh :

awk -f /users2/pfe/vfd1.awk /users2/pfe/vfd.cfg

je pense la probléme est du au fait que j 'ai inséré une commande awk dans un script awk !!!

Merci encore une fois,

Cdlt,

Abdel

Répondre à titexe

6

jipicy, le 5 avr 2007 à 17:53:33

Entendons-nous bien...
Les "$1, $2, $3" correspondent à quoi ? Des variables, des paramètres positionnels ou des champs ?

Ils sont issus d'un "shell "ou de "awk" lui-même ?
Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

7

titexe, le 5 avr 2007 à 17:57:47

C'est des variables que le script awk récupere du fichier vfd.cfg et qui sont séparé par "," ( FS="[,]" ) en exécutant la commande :

awk -f /users2/test/script.awk /users2/test/vfd.cfg

Répondre à titexe

8

jipicy, le 5 avr 2007 à 18:29:30

Tu peux poster un bout de ton fichier où tu dois récupérer les champs et me dire exactement ce que tu veux, parce que là j'ai l'impression qu'on pédale dans la choucroute entre shell, awk et je sais plus quoi encore ;-))

Merci. Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

9

titexe, le 5 avr 2007 à 18:50:07

J'exécute le premier script shell VFD1.sh,

le soucis que j'avais , c'est que a l'interrieur du script awk , y'a la commande echo qui insére une ligne dans un fichier,

ce que je voudrais faire , c'est de controler est ce que cette ligne existe déja dans ce fichier sioui ne rien faire , sinon je rajoute cette ligne !!

le lien pour le script VFD1.sh ( http://cjoint.com/?efsTUnCEzN )
le lien pour le script vfd.cfg ( http://cjoint.com/?efsUTLmmJV )
le lien pour le script vfd1.awk ( http://cjoint.com/?efsVANiEkg )

Voila j'espere que mon probléme est bien eclairci maintenant,

je compte beaucoup sur votre aide,

Cdlt,

Abdel

Répondre à titexe

10

jipicy, le 5 avr 2007 à 20:28:29

Ok merci.

Mais avec tout ça j'ai encore des incertitudes !!!

1- Le fichier "vfd.cfg" c'est tout ce qu'il contient ? 1 ligne et 7 champs ?

2- Les paramètres "$1-$2-$3" de la fameuse ligne "awk '/\"\'$1'\"_\"\'$2'\":\"\'$3'\"/ { print $0 }' etc..." c'est les mêmes que dans le reste du script, comme "if ($1 == "OR")" ???

3- Où ils représentent les champs du fichier "user_cfg" ? (il me faufrait le fichier aussi, ou su moins quelques lignes pour voir à quoi ça ressemble)
Parce que dans ce cas là, la syntaxe serait plutôt du genre :

awk -F"_" '$1 == "foo" && $2 == "bar" && $3 == "foobar" { print $0 }'
A adapter bien sur ;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

11

titexe, le 6 avr 2007 à 11:42:47

Bonjour,

merci pour ton implication dans mon probléme , et merci pour votre réactivité,

1- le fichier vfd.cfg il contient 1 seule ligne avec 7 champs et il peut y'aller jusqu'a 14 champs,

2- les paramétres $1 , $2, $3 sont les memes paramétres partout dans le script,

3- voila le lien d'un des fichiers qui sont dans le répertoire user_cfg, ( http://cjoint.com/?eglQdupdXr )

Merci encore une fois,

Cdlt,

Abdel ;-)

Répondre à titexe

12

 jipicy, le 6 avr 2007 à 13:57:16

Re-

Bon ben je suis désolé, mais j'ai beau trituré le problème dans tous les sens, je n'arrive pas à incorporer cette simulation de "grep" dans ton fichier "awk" ;-(

Sorry...
Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy
Collection CommentÇaMarche.net