Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/09/2011, 12h00   #1
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 109
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 109
Points : 33
Points : 33
Par défaut AWK - Problème test AND

Bonjour;

Voici une procedure Shell :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
# UpcaseColumnString(fic_entree, col :number)
# On met en majuscule la valeur des champs de la colonne col placée en parametre
# Les champs sont seulement des strings
#Champs 2 Nom , 9 Domaine, 11 à 20 Resp Gestionnaire
#
UpcaseColumnString()
{
        awk -v col="$2" -F ';' '
                NF>0 {
                        if ( $col==8 && match($col,/^$/) )
                        {
                                gsub(//,"PDF",$col); print $0
                        }
                        if ( match($col,/^.*$/) )
                        {
                                $col=toupper($col);
                                gsub(/ /,";",$0); print $0
                        }
                }' $1
}
#
Mais le fait est que; le champ 8 s'il est vide ne prend pas la valeur "PDF" !
Ou est mon erreur ?

Merci de votre aide et savoir
Moostiq est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/09/2011, 22h30   #2
Expert Confirmé Sénior
 
Avatar de Sve@r
 
Homme Frédéric
Ingénieur développement logiciels
Inscription : février 2006
Messages : 3 055
Détails du profil
Informations personnelles :
Nom : Homme Frédéric
Âge : 44
Localisation : France, Oise (Picardie)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 3 055
Points : 4 934
Points : 4 934
Citation:
Envoyé par Moostiq Voir le message
Bonjour;

Voici une procedure Shell :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
# UpcaseColumnString(fic_entree, col :number)
# On met en majuscule la valeur des champs de la colonne col placée en parametre
# Les champs sont seulement des strings
#Champs 2 Nom , 9 Domaine, 11 à 20 Resp Gestionnaire
#
UpcaseColumnString()
{
        awk -v col="$2" -F ';' '
                NF>0 {
                        if ( $col==8 && match($col,/^$/) )
                        {
                                gsub(//,"PDF",$col); print $0
                        }
                        if ( match($col,/^.*$/) )
                        {
                                $col=toupper($col);
                                gsub(/ /,";",$0); print $0
                        }
                }' $1
}
#
Mais le fait est que; le champ 8 s'il est vide ne prend pas la valeur "PDF" !
Ou est mon erreur ?
Salut

Ton erreur est que dans awk, une variable ne se préfixe pas de "$". $x indique le champ n° x. Donc si la variable "col" vaut 8, alors $col référence le champ n° 8. Et quand tu compares $col avec 8, ça veut dire que tu vérifies si le champ n° 8 vaut 8...
__________________
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit.
Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant.
Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation.
Dr. Adrian Rogers, 1931
Sve@r est déconnecté   Envoyer un message privé Réponse avec citation 30
Vieux 27/09/2011, 10h10   #3
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 109
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 109
Points : 33
Points : 33
... Mea Culpa Est.

Merci Sve@r ! Je m'en suis rendu compte ce matin...
$X = numero de colonne
X = valeur de la variable

Merci beaucoup
Moostiq est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h10.


 
 
 
 
Partenaires

Hébergement Web