Script Shell et Awk
Résolu
Morgoths
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
Morgoths Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Morgoths Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Voila j ai un petit problème avec un script qui utilise un awk
Voici un extrait de mon fichier d'entrer:
Donc un fichier bien formater avec comme séparateur une virgule
En gros jeu veux faire un script qui permette, en lui passant un ou plusieurs paramètres,
De retourner la deuxième colonne des lignes qui contiennent mon ou mes paramètres dans la 14ème colonne ^^
Très simple n'est-ce pas ?
De plus il ne faut pas que la première colonne commence par le mot "single"
Donc voila mon script :
Donc mon problème est qu'avec la condition écrit en dur tout fonctionne, quand j'utilisai la variable VOLID qui contient ma condition avec tous les paramètres «($14=="V9")||($14=="V3")||(1==0)»,
La fonction awk me renvoi toutes les lignes du fichier sans tenir compte de mes paramètres ^^
J'espère que cela est assez claire
Cela fait plusieurs jours que je bloque dessus XD.
Si quelqu'un peu m'aider ce serait sympa.
Pour info, au final cela doit fonctionner sous AIX
Voila j ai un petit problème avec un script qui utilise un awk
Voici un extrait de mon fichier d'entrer:
ptsas00,0002,Online,Normal,Normal,2107-900,FB 512,P0,Standard,DS,15.0,-,31457280,V0,31457280,legacy oracle00,0003,Online,Normal,Normal,2107-900,FB 512,P0,Standard,DS,60.0,-,125829120,V1,125829120,legacy testqual00,0004,Online,Normal,Normal,2107-900,FB 512,P0,Standard,DS,12.0,-,25165824,V0,25165824,legacy exploit00,0005,Online,Normal,Normal,2107-900,FB 512,P0,Standard,DS,24.0,-,50331648,V4,50331648,legacy
Donc un fichier bien formater avec comme séparateur une virgule
En gros jeu veux faire un script qui permette, en lui passant un ou plusieurs paramètres,
De retourner la deuxième colonne des lignes qui contiennent mon ou mes paramètres dans la 14ème colonne ^^
Très simple n'est-ce pas ?
De plus il ne faut pas que la première colonne commence par le mot "single"
Donc voila mon script :
VOLID='(' for i in $@ do VOLID=$VOLID'($14=='\"$i\"')||' done VOLID=$VOLID'(1==0))' cat $FICHIER_IN | awk -vvolid=$VOLID -F ',' '( volid && ( $1 !~ /^single*/)) {print $2}'
Donc mon problème est qu'avec la condition écrit en dur tout fonctionne, quand j'utilisai la variable VOLID qui contient ma condition avec tous les paramètres «($14=="V9")||($14=="V3")||(1==0)»,
La fonction awk me renvoi toutes les lignes du fichier sans tenir compte de mes paramètres ^^
J'espère que cela est assez claire
Cela fait plusieurs jours que je bloque dessus XD.
Si quelqu'un peu m'aider ce serait sympa.
Pour info, au final cela doit fonctionner sous AIX
A voir également:
- Script Shell et Awk
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Script cmd - Guide
6 réponses
je pense que awk ne comprend pas que la variable volid contient un test à interprèter. J'utilise la variable VOLID du shell dans awk, chez moi ça fonctionne
$ ./f1 V4 0005 $ ./f1 V4 V0 0002 0004 0005 $ $ head f1 #!/bin/sh VOLID='(' for i in $@ do VOLID=$VOLID'($14=='\"$i\"')||' done VOLID=$VOLID'(1==0))' cat fichier | awk -F ',' ''"${VOLID}"' && $1 !~ /^single/ {print $2}' $
autre méthode, on crée un fichier de commande awk
j'utilise cat, plus pratique que echo si il y a plusieurs lignes
j'utilise cat, plus pratique que echo si il y a plusieurs lignes
VOLID='(' for i in $@ do VOLID=$VOLID'($14=='\"$i\"')||' done VOLID=$VOLID'(1==0))' cat << XX > /tmp/f1.awk ${VOLID} && \$1 !~ /^single/ {print \$2} XX awk -F ',' -f /tmp/f1.awk fichier
hello
essaye avec
lire:
quote quote guillemet ${VOLID} guillemet quote
essaye avec
cat $FICHIER_IN | awk -F ',' ''"${VOLID}"' && $1 !~ /^single/ {print $2}'
lire:
quote quote guillemet ${VOLID} guillemet quote
merci de ton aide
je viens de tester sans succès
il me semble que pour utiliser une variable dans le awk tu est obligé de passer par l'option -v nan ?
je viens de tester sans succès
il me semble que pour utiliser une variable dans le awk tu est obligé de passer par l'option -v nan ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question