IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

compter et afficher


Sujet :

Linux

  1. #1
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Par défaut compter et afficher
    Bonjour, à tous, j'ai un souci d'affichage et j'ai besoin de votre aide, svp
    voici mon script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #!/bin/bash
     
    echo "ID;QSTATUS3;ASK;VIDEO;AUDIO;IMAGE;AUTRE;NBPAGE"
     
    for i in `find -type f -name "*.dsc"`
    do
    	QSTATUS3=`grep "qstatus=v3" $i | wc -l`
    	ASK=`grep "ASK" $i | wc -l`
    	VIDEO=`grep "FLV" $i | wc -l`
    	AUDIO=`grep "MP3" $i | wc -l`
    	IMAGE=`grep "IMG" $i | wc -l`
    	AUTRE=`grep "BNK" $i | wc -l`
    	NBPAGE=`grep "NEWPAGE" $i | grep -v "^//" | wc -l`
     
    	echo "${i:2};$ASK;$QSTATUS3;$VIDEO;$AUDIO;$IMAGE;$AUTRE;$NBPAGE"
    done
    et la sortie j'ai quelque chose comme ça :

    .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /nupsell.dsc;50;0;0;0;9;0;40
    ./1000961v2.dsc;116;9;0;0;1;0;105
    ./1001518.dsc;32;3;0;0;0;0;25
    ./1000612.dsc;37;0;0;0;19;0;35
    mon probleme: je voulais me debarasser du "./" qui est devant ID

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    substitue "tout ce qui precède le premier / et le slash" par ""

    parce que sur la première ligne tu as "/" et pas "./" donc là ça résoud les deux cas.

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Ta commande find find -type f -name "*.dsc" descend dans des sous-répertoires ou pas ?

    Si la réponse est non, alors rajoute "-printf '%f\n'" et tu devrais être tranquille

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Je n'avais pas vu le "${i:2}" qui est sensé enlever le "./".

    Tu peux aussi faire avec : ${i/\.\//}

  5. #5
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Par défaut
    merci pour vos reponses.

    En fait j'ai un repertoire un repertoire qui contient plusieurs types de fichiers et je veux traiter les ceux qui ont extension .dsc,
    sinon comment je mets "-printf '%f\n'" et une question: est ce qu'il n'y a pas d'erreur dans ce code parcequ'il ne compte pâs bien

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par arm3366 Voir le message
    sinon comment je mets "-printf '%f\n'"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find -type f -name "*.dsc" -printf '%f\n'
    et une question: est ce qu'il n'y a pas d'erreur dans ce code parcequ'il ne compte pâs bien
    Ben ça dépend, sans voir les données qui sont traitées et sans savoir le résultat que tu veux obtenir, difficile de se faire une idée

  7. #7
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Par défaut
    zipe31 voila ce que ce que j'ai mis à la fin:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "${i/\.\//};$ASK;$QSTATUS3;$VIDEO;$AUDIO;$IMAGE;$AUTRE;$NBPAGE"
    done
    j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     ID;QSTATUS3;ASK;VIDEO;AUDIO;IMAGE;AUTRE;NBPAGE
    dsc.sh: 16: Bad substitution
    sachant que la ligne 16 c'est

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Affiche ton code en entier tu dois avoir une m*rdouille ailleurs

  9. #9
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Par défaut
    c'est ce mis en tou debut

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Ben c'est comme tu veux, dans ce cas je ne peux rien te dire de plus

  11. #11
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Par défaut
    je ne vois ce qui peux t"enerver, t'as demande mon code et l'integralite de mon code est au debut de la discussion, sinon c'est toi comme tu veux!!

  12. #12
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Je ne m'énerve pas... tu viens demander de l'aide, on te file une solution, tu viens dire que ça ne marche pas, on (enfin je) te demande d'afficher ton code (modifié apparemment) et ça a l'air de te demander un effort suprême que de faire un copier/coller, d'où ma démotivation

  13. #13
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Par défaut
    j'ai mieux à faire que lire des jeux de mots!!! sinon merci pour ta participation

  14. #14
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Bonjour,

    ON NE FAIT PAS : for element in $(commande); do, si un nom de fichier contient un des caractères de l'IFS, ça bouclera sur chaque mot du nom du fichier en cause.

    Alors, c'est soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for element in ./*; do if [ -f "$element" ]; then ...; fi; done
    soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     find -type f -exec ... \;
    en gros.

    Montre-nous comment tu fais pour exécuter ton script.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  15. #15
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Par défaut
    Merci N_BaH pour executer je fait sh dsc.sh

  16. #16
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Par défaut
    et pourtant ma boucle marche,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #!/bin/bash
     
    echo "ID;QSTATUS3;ASK;VIDEO;AUDIO;IMAGE;AUTRE;NBPAGE"
     
    for i in `find -type f -name "*.dsc"`
    do
            QSTATUS3=`grep "qstatus=v3" $i | wc -l`
            ASK=`grep "ASK" $i | wc -l`
            VIDEO=`grep "FLV" $i | wc -l`
            AUDIO=`grep "MP3" $i | wc -l`
            IMAGE=`grep "IMG" $i | wc -l`
            AUTRE=`grep "BNK" $i | wc -l`
            NBPAGE=`grep "NEWPAGE" $i | grep -v "^//" | wc -l`
            #print "-printf '%f\n'" 
            echo "${i};$ASK;$QSTATUS3;$VIDEO;$AUDIO;$IMAGE;$AUTRE;$NBPAGE"
    done
    mais il y a deux soucis:
    1_ les resulats de des calculs se sont exactes comparée à ceux que j'ai eu par la main
    _ dans l'affichage j'ai quelqu chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /nupsell.dsc;50;0;0;0;9;0;40
    ./1000961v2.dsc;116;9;0;0;1;0;105
    ./1001518.dsc;32;3;0;0;0;0;25
    ./1000612.dsc;37;0;0;0;19;0;35
    et je voudrais me debarasé d ./
    Remarque: je saute toutes les lignes commaçant par un //

  17. #17
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    eh, oui, voilà pourquoi la substitution ne fonctionne pas : sh est probablement un lien vers dash, ou autre "strictement POSIX".

    un script se lance de la même manière qu'une commande normale : /chemin/commande, si /chemin n'est pas dans la variable PATH.

    Si ton script est dans le répertoire courant, alors ./nomScript.


    -printf est une option/commande de find !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  18. #18
    Membre émérite
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Par défaut
    euh, pour virer le "./" initial, un
    devrait suffire.
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  19. #19
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Par défaut
    le regle bien le probleme du ./ merci tout le monde

    Mais par contre ce que je ne comprends pas , c'est les erreurs dans le calcul, sachant que :
    j'ouvre le fichier et je compte des occurences en ignorant les lignes commençant par un //

  20. #20
    Membre émérite
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Par défaut
    Cela dit, personnellement, j'aurai fait un truc comme ça pour répondre à ton besoin (en complétant les expressions pour avoir tout ce que tu veux, et éventuellement aussi ne pas compter si tu as plusieurs occurences de la même chose sur une seule ligne) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -type f -name "*.dsc" -exec awk 'BEGIN{ask=qstatus=0} ($1 ~ /\/\//){next} /qstatus=v3/{qstatus++} /ASK/{ask++} END{print FILENAME " " qstatus";"ask";"}' {} \; | sed 's,./,,'
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2007] compter et afficher les cellules vides
    Par souad12 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/08/2011, 01h47
  2. Compter et afficher les résultats
    Par Quartus dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 19/02/2007, 16h41
  3. Compter et afficher les résultats
    Par Quartus dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/02/2007, 13h16
  4. Réponses: 10
    Dernier message: 28/05/2005, 11h19
  5. Réponses: 4
    Dernier message: 29/05/2004, 14h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo