Extraire une chaine de caractére [Résolu/Fermé]

Signaler
-
 CYG -
Bonjour,
j ai vraiment besoin de votre aide, mon probléme est comme suit:
j ai créer un fichier temp.sh, qui va être exécuté par shell sous cygwin:

< cd répértoire1
cpxfiddle -w X -q phase -o float -f cr4 -l1 -L Y -p X diff.filt > diff.filt.phase
cd ../répértoire2
cpxfiddle -w X -q phase -o float -f cr4 -l1 -L Y -p X diff.filt > diff.filt.phase
cd ../répértoire3
cpxfiddle -w X -q phase -o float -f cr4 -l1 -L Y -p X diff.filt > diff.filt.phase
cd ../répértoire4
cpxfiddle -w X -q phase -o float -f cr4 -l1 -L Y -p X diff.filt > diff.filt.phase
cd ../répértoire5
cpxfiddle -w X -q phase -o float -f cr4 -l1 -L Y -p X diff.filt > diff.filt.phase
cd ../répértoire6
cpxfiddle -w X -q phase -o float -f cr4 -l1 -L Y -p X diff.filt > diff.filt.phase
cd ../répértoire7
cpxfiddle -w X -q phase -o float -f cr4 -l1 -L Y -p X diff.filt > diff.filt.phase>

le probléme c est que X,Y varie d une ligne à une autre, c est deux valeurs se trouvent dans un fichier appelé "interferogram.out" à l intérieur du répértoire1 pour la premiére ligne, répértoire2 pour la deuxiéme ligne et ainsi de suite


un extrait du fichier "interferogram.out"
.
.
.

*******************************************************************
*_Start_interfero:
*******************************************************************
Data_output_file: cint_out
Data_output_format: complex_real4
Data_output_file_real_interferogram: int_out
Data_output_format_real_interferogram: real4
Flatearth correction subtracted: no
First_line (w.r.t. original_master): 8866
Last_line (w.r.t. original_master): 16650
First_pixel (w.r.t. original_master): 2790
Last_pixel (w.r.t. original_master): 3957
Multilookfactor_azimuth_direction: 5
Multilookfactor_range_direction: 1
Number of lines (multilooked): 1557
Number of pixels (multilooked): 1168
*******************************************************************
.
.
.
par exemple pour X et Y de la premiére ligne( le premier répértoire) sont respectivement 1557(ligne 54) et 1168(ligne55).

vous avez des propositions?

merci d avance;

CYG

1 réponse

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 857
Salut,

Une solution...
cd répértoire1
X=$(grep "Number of lines" interferogram.out | grep -o '[0-9][0-9]*')
Y=$(grep "Number of pixels" interferogram.out | grep -o '[0-9][0-9]*')
cpxfiddle -w "$X" -q phase -o float -f cr4 -l1 -L "$Y" -p "$X" diff.filt > diff.filt.phase
cd ../répértoire2
X=$(grep "Number of lines" interferogram.out | grep -o '[0-9][0-9]*')
Y=$(grep "Number of pixels" interferogram.out | grep -o '[0-9][0-9]*')
cpxfiddle -w "$X" -q phase -o float -f cr4 -l1 -L "$Y" -p "$X" diff.filt > diff.filt.phase
cd ../répértoire3
X=$(grep "Number of lines" interferogram.out | grep -o '[0-9][0-9]*')
Y=$(grep "Number of pixels" interferogram.out | grep -o '[0-9][0-9]*')
cpxfiddle -w "$X" -q phase -o float -f cr4 -l1 -L "$Y" -p "$X" diff.filt > diff.filt.phase
cd ../répértoire4
etc.
Tu peux aussi employer à la place de "grep" :
Y=$(sed -n '/Number of pixels/ s/[^0-9]//gp' interferogram.out)
;-))
merci bcp jipicy; ça marche nikel

CYG