Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/11/2008, à 10:58

mezhoud

[Résolu]script-sélection de ligne

Bonjour les meilleurs,
Ce script me permet de Sélectionner toutes les lignes qui commencent par "Query" et la première ligne après "Query" qui commence par "dip":

awk ' /^Query=/ {query=$0;next} /^dip:/ { if (query != "") { print query;print;query=""}}' <nom_fichier> > <fichieroutput>

Tout ce que je veux c'est de faire tout cela si la ligne commencant pas "dip" contient la chaine de caractères suivantes: '*e-**'

Voilà
merci beaucoup

Dernière modification par mezhoud (Le 10/11/2008, à 14:11)

Hors ligne

#2 Le 09/11/2008, à 13:20

Totor

Re : [Résolu]script-sélection de ligne

Salut,
J'ai retrouvé ton ancien post afin d'avoir un exemple de contenu de fichier source. Ce que j'en déduis, c'est que *e-** correspond à une expression et non à une suite de caractères. Si je ne me trompe pas, l'expression est plus précisément un chiffre suivi de la lettre "e", puis d'un tiret et enfin de 2 chiffres qui terminent la ligne. C'est à dire : [0-9]e-[0-9][0-9]$

Le script devient donc :

awk ' /^Query=/ {query=$0;next} /^dip:*[0-9]e-[0-9][0-9]$/ { if (query != "") { print query;print;query=""}}' <nom_fichier> > <fichieroutput>

-- Lucid Lynx --

Hors ligne

#3 Le 09/11/2008, à 13:41

Alain.g

Re : [Résolu]script-sélection de ligne

Bonjour

* est le quantificateur de l'élément qui le précède. Donc "dip:*" signifie dip suivi de zéro, un ou plusieurs deux-points.
Il faut donc placer un joker avant : dip:.*


Xubuntu Karmic !

Hors ligne

#4 Le 09/11/2008, à 13:53

Totor

Re : [Résolu]script-sélection de ligne

Alain.g a écrit :

Bonjour

* est le quantificateur de l'élément qui le précède. Donc "dip:*" signifie dip suivi de zéro, un ou plusieurs deux-points.
Il faut donc placer un joker avant : dip:.*

c'est loin d'être faux wink


-- Lucid Lynx --

Hors ligne

#5 Le 09/11/2008, à 14:51

mezhoud

Re : [Résolu]script-sélection de ligne

Bonjour , meric pour votre coopération,

OUi M. Totor c'est bien le type de fichier que j'ai posté auparavant. je vous juste raffiner le script de tel sorte il devient plus intelligent.

Voici le but:

les valeurs 5e-7 par exemple sont des scores exprimés en exponentiel. Si le score est supérieur à e-5 (e-4, e-3, 5e-5 par exemple) alors le résultat n'est pas bon.
dans le premier script, on récupére le Query  Gi|..... et la meilleur score. C'est tout.
Mais il se  peut que le meilleur score soit supérieur au seuil... Donc je doit les éliminer.

Est t il compréhensible??:rolleyes:

Merci beaucoup

Hors ligne

#6 Le 09/11/2008, à 15:47

Totor

Re : [Résolu]script-sélection de ligne

le seuil e-5 est-il fixe ? Dépend t'il du "Query" ?


-- Lucid Lynx --

Hors ligne

#7 Le 09/11/2008, à 16:04

mezhoud

Re : [Résolu]script-sélection de ligne

Le seuil est fixe.
oui il dépend de Query. puisque le score interprêtre la ressemblance de la chaine de caractère query à celle de DIP.

Merci

Hors ligne

#8 Le 09/11/2008, à 21:54

Totor

Re : [Résolu]script-sélection de ligne

désolé mais je ne comprend pas trop "le seuil est fixe mais il dépend du Query .... "
S'il il dépend de query, il ne peut être fixe.
Je comprend qu'il soit fixe pour une "Query" donnée mais s'il dépend d'une "Query", il ne peut être fixe pour toutes les Query...

Et puis, quel est le résultat final exacte attendu ?
pour une Query, avoir toutes les lignes "dip" ayant un "scrore" inférieur ou égale au seuil max ?
Où est définit le seuil max pour une Query ?


-- Lucid Lynx --

Hors ligne

#9 Le 09/11/2008, à 22:48

mezhoud

Re : [Résolu]script-sélection de ligne

Désolé moi aussi j'ai pas bien compris ta question. tu parlais language informaticien ou ordinaire.

Donc je reprends:

le seuil est fixe mais si tu voix dans l'ancien post http://forum.ubuntu-fr.org/viewtopic.php?id=256541, les valeurs changent dans chaque ligne.

But,
Je ne veux pas récupérer les lignes qui ont une valeur supérieur à e-5. tout simplement en gardant le script précédent.

Merci infinément

Hors ligne

#10 Le 10/11/2008, à 00:02

Totor

Re : [Résolu]script-sélection de ligne

Bon alors, j'avoue que tu m'a fait chercher un peu car il m'a fallu transformer la ligne pour pouvoir effectuer des comparaisons numériques wink
Si j'ai bien compris, ceci devrait répondre à ton besoin :

awk ' BEGIN {seuil=exp(-5)} /^Query=/ {query=$0;next} /^dip:.*[0-9]*e-[0-9]*$/ { if (query != "") { nb=split($NF,expo,"e"); if (expo[1]=="") {valeur=exp(expo[2])} else {valeur=expo[1]*exp(expo[2])};if (seuil >= valeur) { print query;print;query=""}}}' <nom_fichier> > <fichieroutput>

-- Lucid Lynx --

Hors ligne

#11 Le 10/11/2008, à 14:10

mezhoud

Re : [Résolu]script-sélection de ligne

Salut,
BRAVO BRAVO BRAVO.
ça marche
Tu es le meilleur

cordialement,

Hors ligne