Extraire une chaine et indiquer le nom du rép

Résolu
mecool23 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
mecool23 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
a la suite du sujet "extraire une chaine de caractére", j ai rencontré un autre probléme celui du chemin, dans lle fichier résultant <tmp.txt> j ai besoin de savoir la source de chaque chaîne
__sous répertoire 1
| |__interferogram.out
|__sous répértoire 2
| |__interferogram.out
|__sous répértoire 3
| |__interferogram.out
|__sous répértoire 4
| |__interferogram.out
|__tmp.txt

le résultat voulu extrait du fichier <tmp.txt>

le nom du sous répertoire 1 16534673
le nom du sous répértoire 2 12345679
le nom du sous répértoire 3 14567865
le nom du sous répértoire 4 17654379

merci d avance
A voir également:

3 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Un exemple à adapter :
$ tree
.
`-- repertoire1
    |-- interferogram1.out
    `-- sous_repertoire2
        |-- interferogram2.out
        `-- sous_repertoire3
            |-- interferogram3.out
            `-- sous_repertoire4
                `-- interferogram4.out

4 directories, 4 files

$ find . -name "interferogram?.out" -exec dirname {} \; -exec basename {} \; | sed 'N;s#\./#Répertoire : #;s/\n/    Fichier : /'
Répertoire : repertoire1    Fichier : interferogram1.out
Répertoire : repertoire1/sous_repertoire2    Fichier : interferogram2.out
Répertoire : repertoire1/sous_repertoire2/sous_repertoire3    Fichier : interferogram3.out
Répertoire : repertoire1/sous_repertoire2/sous_repertoire3/sous_repertoire4    Fichier : interferogram4.out

[jp@MDK-2008 cyg]$
;-))
0
mecool23 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
la commande ci_dessus extrai de chaque fichier <interferogram.out> la chaine que je veux et elle met la chaine dans un fichier <tmp.txt>
find . -name "interferogram.out" -exec sed -n '388,/of pixels/{ /of lines\|of pixels/{s/.*\s//p}}' {} \; | sed 'N;s/\n/ * /' | bc >> tmp.txt

_19920505_20010527(le nom du dossier)
| |__interferogram.out
|__19930417_19960813
| |__interferogram.out
|__19990714_20010405
| |__interferogram.out
|__20020719_20060718
| |__interferogram.out
|__tmp.txt

mais ce que je veux bien, c est d'indiquer le nom du dossier qui contient le fichier <interferogram.out> et à côté la chaîne extraite

le résultat recherché (extrait du fichier tmp.txt)

19920505_20010527(le nom du dossier) 1658241(la chaîne extraite du fichier <interferogram.out>)
19930417_19960813 1524187
19990714_20010405 1427186
20020719_20060718 1714258


merci d avance
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
J'avais bien compris ,mais ce n'est pas si simple que ça, à cause des pipes entre autre ;-((

Mais bon...
find . -name "interferogram.out" -exec bash -c 'rep=$(basename ${1}); result=$(sed -n "388,/of pixels/{ /of lines\|of pixels/{s/.*\s//p}}" ${1} | sed "N;s/\n/ * /" | bc); echo "${rep/.\//} ${result}"' - {} \; >> tmp.txt
;-))
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
J'avais bien compris ,mais ce n'est pas si simple que ça, à cause des pipes entre autre ;-((

Mais bon...
find . -name "interferogram.out" -exec bash -c 'rep=$(dirname ${1}); result=$(sed -n "388,/of pixels/{ /of lines\|of pixels/{s/.*\s//p}}" ${1} | sed "N;s/\n/ * /" | bc); echo "${rep##*/} ${result}"' - {} \; >> tmp.txt
;-))
0
mecool23 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour,

j'ai cru que j ai pas bien expliqué,désolé:$. la commande est impec, c est ce que je veux, merci bcp jipicy;

CYG
0