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

Shell et commandes GNU Discussion :

Division et somme sur la même ligne


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Février 2011
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 176
    Par défaut Division et somme sur la même ligne
    Bonjour,

    comment je peux calculer un rapport puis sommer ce rapport pour chaque ligne d'un fichier,
    mes données sont sous format :

    P() = 0.154597 prob = -0.81 cas = 1
    P() = 0.0268225 prob = -1.50 cas = 2
    P() = 6.14752e-10 prob = -9.20 cas = 3-2
    je veux diviser la valeur du champ prob par le dernier caractère (plutôt l'avant dernier sans /n) je récupère dernier caractère par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $ligne | tail -c 2
    la somme est calculée par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    val=$( { { echo 'scale=20;' ; cat $fic ; } | sed -e 's|.*= *\(.*\) cas.*|\1 +|' | tr '\n' ' ' ; echo '1' ; } | bc -l)
    j'arrive pas à combiner les deux dans même traitement
    merci

  2. #2
    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,

    c'est toi qui formate ces fichiers, ou c'est un programme ?
    n'y a-t-il pas moyen d'obtenir un fichier csv ? c'est pénible.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    awk -F';' '{gsub(/ *[a-z]+ = /,";");gsub("^P\(\) = ","");sub("[^-]*-","",$3);s+=$2/$3}END{print s}' tonFichier
    -6.16
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Février 2011
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 176
    Par défaut
    merci ,non c'est un programme,
    j'ai ce message d'erreur
    awk: warning: escape sequence `\(' treated as plain `('
    awk: warning: escape sequence `\(' treated as plain `('

  4. #4
    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
    ah! il y a une légère différence de traitement des parenthèses entre gawk et mawk...
    enlève simplement les anti-slashes (sub("^P() = ","")).
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Février 2011
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 176
    Par défaut
    Merci N_Bah
    j'ai un petit souci, à l'intérieur des () de P j'ai ça
    P( a | b, c,.. )
    a et b peuvent être des lettres ou des chiffres ou ponctuation
    par exemple je peux avoir ça :
    P( r | s# n s <UNK> U ) = 0.015 prob = -1.821900 cas= 6x5x4x3-2
    donc le contenu de P varie et la fin de la chaine cas aussi
    alors j'ai cette erreur
    (standard_in) 377: illegal character: P
    (standard_in) 377: illegal character: |

  6. #6
    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
    je n'arrive pas à reproduire ces erreurs
    essaye ainsi :sub("^P([^)]*) = ","")on enlève tout entre P( et ) compris
    ...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sur la même ligne mettre du texte à gauche et à droite
    Par Oberown dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 20/06/2007, 15h50
  2. Réponses: 6
    Dernier message: 28/09/2005, 10h24
  3. Aligner du texte à gauche et à droite sur une même ligne ?
    Par pontus21 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 12/04/2005, 11h25
  4. 2 éléments sur une même ligne
    Par ben_iap dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/11/2004, 17h27
  5. 2 recordset sur la même ligne
    Par gunnm dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 14/08/2004, 20h36

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