Extraire une chaîne

Résolu/Fermé
mecool23 - 23 avril 2008 à 09:56
 mecool23 - 24 avril 2008 à 10:43
Bonjour,
mon probléme consiste à extraire une chaîne de caractére bien précise, j ai ce script pour extraire la chaîne mais je sais pas comment l adapter à mon cas; voici le script

X=$(grep "Last_line" master.out | grep -o '[0-14][0-14]*')
Y=$(grep "First_pixel" master.out | grep -o '[0-14][0-14]*')
plotoffsets interferogram.out 1 "$X" 1 "$Y" 0.11 master.afiltered


et voici la chaine(soulignée) que je veux extraire

First_line (w.r.t. original_image): 1
Last_line (w.r.t. original_image): 26308
First_pixel (w.r.t. original_image): 1
Last_pixel (w.r.t. original_image): 4900

quelqu un peut m aider??


merci d avance

CYG

3 réponses

Utilisateur anonyme
23 avril 2008 à 10:12
donne le fichier master.out
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
23 avril 2008 à 12:02
Salut,
egrep '^(Last|First)_(line|pixel) ' master.out | egrep -o '[0-9]{2,}'
;-))
0
vous pouvez m'expliquer la signification de cette commande car ce que je cherche moi c est de remplacer "$X" par 26308, et "$Y" par 4900

merci d avance;

CYG
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897 > mecool23
23 avril 2008 à 18:51
Bon déjà dans le fichier fourni sur cjoint, il n'y a aucune valeur "26308".
Ensuite, même si elle y était, comme il existe plusieurs lignes commençant par "Last_line" il faut savoir dans quelle partie, du moins entre quelle et quelle partie extraire cette fameuse ligne...

Sinon, la syntaxe donnée correspond à :
egrep
Ou "grep -E" pour utiliser la syntaxe des expressions étendues

'^(Last|First)_(line|pixel) '
On recherche toutes chaines commençant par Last OU First suivi d'un underscore et suivi par line OU pixel

| 
Puis on filtre ce résultat

egrep -o '[0-9]{2,}'
En recherchant qu'une chaine exclusivement numérique et composée d'au moins 2 chiffres ou plus
;-))
0
mecool23 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
24 avril 2008 à 10:00
bonjour,

merci bcp pour l'explication, pour les valeurs vous avez raison je me suis trompé, c est 26445 au lieu de 26308.
votre commande va me donner juste une chaine, non?? car moi je veux extraire les deux chaines 26445 et 4900, et les remplacer respectivement dans ma ligne de commande <plotoffsets interferogram.out 1 "$X" 1 "$Y" 0.11 master.afiltered>avec ($X =26445, et $Y=4900)

merci d avance

CYG
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
24 avril 2008 à 10:10
Ok, par contre tu m'as toujours pas dit sur quel(s) critère(s) déterminer les lignes voulues. En suivant ta demande je suppose que c'est les 2 premières rencontrées, exact ?
De ce fait, essayes avec ça :
[tmpfs]$ X=$(egrep -m 1 '^Last_line ' master.out | egrep -o '[0-9]{2,}')
[tmpfs]$ Y=$(egrep -m 1 '^Last_pixel ' master.out | egrep -o '[0-9]{2,}')
[tmpfs]$ echo -e "X=$X\nY=$Y"
X=26445
Y=4900
[tmpfs]$
;-))
0
exact, merci beaucoup jipicy

tt mes respects

CYG
0