A voir également:
- Programmer en C-Shell
- Classic shell windows 11 - Télécharger - Personnalisation
- Programmer sms - Guide
- Programmer mail gmail - Guide
- Programmer en basic sous windows 10 - Télécharger - Édition & Programmation
- Programmer un mail outlook - Guide
4 réponses
tuton
Messages postés
94
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
12 octobre 2005
5
16 mars 2005 à 18:26
16 mars 2005 à 18:26
bon ca m'enerve je comprend pas pourquoi il m'affiche les truc 2 fois
tuton
Messages postés
94
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
12 octobre 2005
5
16 mars 2005 à 18:28
16 mars 2005 à 18:28
GROS PS : je sais pas ce qu'es le C-shell mais ton truc ca ressemble à la syntax du bash alors voila ce que j'aurais fait sous bash, je precise que je ne suis pas un expert de la programation, je dirais plutot même un debutant... Bon courage
au pif sans essayer... un truc du genre ca marche ou pas:
i="0"
p="1"
ligne="$LIGNE_A_TRAITER"
while [ "$i" == "0" ]
do
test=`echo $ligne | awk -F; '{print $p}'`
if [ "$test" != "" ]
then
counter = $(( $counter + 1 ))
else
i="1"
fi
done
echo "le nombre de parametre est: $counter"
voila j'espere que ca marchotera un peu.
sinon pour des precision,
man awk
man bash...
salut
au pif sans essayer... un truc du genre ca marche ou pas:
i="0"
p="1"
ligne="$LIGNE_A_TRAITER"
while [ "$i" == "0" ]
do
test=`echo $ligne | awk -F; '{print $p}'`
if [ "$test" != "" ]
then
counter = $(( $counter + 1 ))
else
i="1"
fi
done
echo "le nombre de parametre est: $counter"
voila j'espere que ca marchotera un peu.
sinon pour des precision,
man awk
man bash...
salut
Salut,
Je procederais comme suit:
Une seule ligne, toutes les données voulues.
L'inconvenient majeur c'est que le nombre total de ligne ne peut arriver qu'a la fin puisque la variable NR contient le nombre d'enregistrement déjà lus.
Rien ne t'empeches de passer par un wc -l avant la commande awk, et de supprimer le bloc END, tout dépend de ce que tu souhaite avoir en sortie, dans quel ordre, et ce que tu souhaites en faire.
FS: Séparateur
FNR: Numero de l'enregistrement lu
NF: Nombre de champ de l'enregistrement courant
NR: Nombre d'enregistrement lus
Mais les autres solutions ne manquent pas
Si tes champs ne contiennent pas d'espace, tu peux transformer les ";" en espace (tr ';' ' ') puis compter les mots (wc -w), si tu as des espaces, il suffit de les transformer en autre chose au préalabe(#, -, _, etc.)
Bonne continuation.
Je procederais comme suit:
awk 'BEGIN{ FS=";" } { print "Ligne "FNR": "NF" éléments."} END{ print "Nombre de ligne total: "NR }'
Une seule ligne, toutes les données voulues.
L'inconvenient majeur c'est que le nombre total de ligne ne peut arriver qu'a la fin puisque la variable NR contient le nombre d'enregistrement déjà lus.
Rien ne t'empeches de passer par un wc -l avant la commande awk, et de supprimer le bloc END, tout dépend de ce que tu souhaite avoir en sortie, dans quel ordre, et ce que tu souhaites en faire.
FS: Séparateur
FNR: Numero de l'enregistrement lu
NF: Nombre de champ de l'enregistrement courant
NR: Nombre d'enregistrement lus
Mais les autres solutions ne manquent pas
Si tes champs ne contiennent pas d'espace, tu peux transformer les ";" en espace (tr ';' ' ') puis compter les mots (wc -w), si tu as des espaces, il suffit de les transformer en autre chose au préalabe(#, -, _, etc.)
Bonne continuation.
tuton
Messages postés
94
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
12 octobre 2005
5
17 mars 2005 à 15:22
17 mars 2005 à 15:22
c'est clairement plu simple en effet...
Merci nfrirer ca peut toujours servir ce genre de commande...
Merci nfrirer ca peut toujours servir ce genre de commande...