Shell et awk, ya un probleme???
nonyus
-
jipicy Messages postés 41342 Statut Modérateur -
jipicy Messages postés 41342 Statut Modérateur -
Bonjour à tous,
VOila j'ai un probleme,
Je veut tester si un fichier est bien de la forme "*@*@*" etsi il ne les pas afficher une message d'erreur et qui j'ai reussi le premier mais pas a quitter :
testfic=`awk -F "@" 'BEGIN{bon=1;} $0 ~ /*@*@*/ {bon=0;} END{if (bon==0) {print "Fichier non conforme";} }' $2 `
echo $testfic
Mon deuxieme probleme C'est de lire une entree au clavier de la comparer à chaque 1iere colonne de chaque ligne d'un fichier et si sa correspond a l'entree du clavier il faut executer la commande shell qui est a la troisieme colonne de la meme ligne.
execcmd=`awk -F "@" BEGIN'{"read" | getline choix;} $1==choix {"$3";}' $2`
echo $execcmd
Cette commande ne marche pas, et je n'est pas d'autre idée
Merci d'avances pour toutes vos reponses.
VOila j'ai un probleme,
Je veut tester si un fichier est bien de la forme "*@*@*" etsi il ne les pas afficher une message d'erreur et qui j'ai reussi le premier mais pas a quitter :
testfic=`awk -F "@" 'BEGIN{bon=1;} $0 ~ /*@*@*/ {bon=0;} END{if (bon==0) {print "Fichier non conforme";} }' $2 `
echo $testfic
Mon deuxieme probleme C'est de lire une entree au clavier de la comparer à chaque 1iere colonne de chaque ligne d'un fichier et si sa correspond a l'entree du clavier il faut executer la commande shell qui est a la troisieme colonne de la meme ligne.
execcmd=`awk -F "@" BEGIN'{"read" | getline choix;} $1==choix {"$3";}' $2`
echo $execcmd
Cette commande ne marche pas, et je n'est pas d'autre idée
Merci d'avances pour toutes vos reponses.
A voir également:
- Shell et awk, ya un probleme???
- Classic shell - Télécharger - Personnalisation
- Secure shell - Télécharger - Divers Web & Internet
- Shell infrastructure host c'est quoi - Guide
- Efi shell version 2.31 - Forum Programmation
- Shell startup windows 10 - Guide
1 réponse
Salut,
Pour le 1er problème, teste avec ça :
========================================
Pour le second en partant des fichiers suivants :
(fichier source : fich)
[jp@Mandrake tmpfs]$ cat fich
premier@choix@ls
second@choix@df -h
troisième@choix@ls -l
quatrième@choix@ls -a
choix@premier@df
(fichier script : essai)
[jp@Mandrake tmpfs]$ cat essai
#!/bin/bash
echo "Entrer au clavier un des termes suivants :"
echo
echo -e "\tpremier"
echo -e "\tsecond"
echo -e "\ttroisième"
echo -e "\tquatrième"
echo
read choix
var=`grep ^"$choix" fich | awk -F "@" '{ print $3 }'`
echo $var
$var
exit
[jp@Mandrake tmpfs]$
Ce qui donne :
Pour le 1er problème, teste avec ça :
echo "majux@un" | awk -F "@" ' $0 !~ /^[a-z][a-z]*@[a-z][a-z]*@[a-z][a-z]*/ { print "Fichier non conforme" }'Fais varier les caractères dans "echo" pour tester.
========================================
Pour le second en partant des fichiers suivants :
(fichier source : fich)
[jp@Mandrake tmpfs]$ cat fich
premier@choix@ls
second@choix@df -h
troisième@choix@ls -l
quatrième@choix@ls -a
choix@premier@df
(fichier script : essai)
[jp@Mandrake tmpfs]$ cat essai
#!/bin/bash
echo "Entrer au clavier un des termes suivants :"
echo
echo -e "\tpremier"
echo -e "\tsecond"
echo -e "\ttroisième"
echo -e "\tquatrième"
echo
read choix
var=`grep ^"$choix" fich | awk -F "@" '{ print $3 }'`
echo $var
$var
exit
[jp@Mandrake tmpfs]$
Ce qui donne :
[jp@Mandrake tmpfs]$ ./essai Entrer au clavier un des termes suivants : premier second troisième quatrième troisième ls -l total 16 -rwxr-xr-x 1 jp jp 237 jun 4 15:52 essai -rwxr-xr-x 1 jp jp 239 jun 4 15:50 essai~ -rw-r--r-- 1 jp jp 98 jun 4 15:50 fich -rw-r--r-- 1 jp jp 91 jun 4 14:32 fich~ -rw-r--r-- 1 jp jp 0 jun 4 14:38 fich1 -rw-r--r-- 1 jp jp 0 jun 4 14:38 fich2 -rw-r--r-- 1 jp jp 0 jun 4 14:38 fich3 [jp@Mandrake tmpfs]$;-))