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 21/08/2013, à 00:52

Salim86

utilisation dans un script de "grep" et "awk" pour imprimer dans un fi

Bonsoir à tous,

J'utilise un logiciel d'imagerie cérébrale (freesurfer) pour calculer le volume total du cerveau.

En exécutant ce script :

" foreach filename (*_conv) mri_segstats --subject ${filename} --etiv-only "

J'obtiens dans mon terminal la réponse suivante :

" $Id: mri_segstats.c,v 1.75.2.2 2011/04/27 22:18:58 nicks Exp $
cwd
cmdline mri_segstats --subject MHC6HB08t1conv --etiv-only
sysname Linux
hostname charles-D525TUD
machine i686
user charles
atlas_icv (eTIV) = 1189938 mm^3 (det: 1.637149 ) "

Mon objectif est de récupérer dans un fichier texte (puis éventuellement dans un fichier excel) les informations en gras afin d'obtenir le nom du sujet avec en face le nombre correspondant soit dans cet exemple : MHC6HB08t1conv 1189938

J'ai écrit ce script

"foreach filename (*_conv) mri_segstats --subject ${filename} --etiv-only | grep -E 'atlas_icv|subject' | awk '{print $4}' end "

qui me donne des réponses sous cette forme :

"MHC6HB08t1conv
1189938
MHC6HB09t1conv
1644894
MHC6HB10t1conv
1760029
MHC6HB11t1conv
1586508
MHC6HB12t1conv
1841703"

Je souhaiterai avoir le nom du sujet (MHC etc..) avec en face le nombre correspondant.

J'ai donc en fait deux questions :

1° comment modifier mon script pour avoir le chiffre en face du nom du sujet et non le chiffre en dessous du nom du sujet

2° j'ai bidouillé ce script mais je ne sais pas si il est "sur". je m'explique : j'utilise ce script pour plusieurs centaines de personnes, donc si à un moment il y a une erreur je ne voudrai pas que tout soit décalé.

En fait je cherche à faire un script qui puisse me mettre dans un fichier texte les deux informations en gras (nom du sujet et numéro correspondant).

Pour mettre le résultats dans un fichier texte je pensais utiliser la fonction > nomdufichier.txt

Merci beaucoup, j'espère avoir été le plus clair possible.

Charles

Hors ligne

#2 Le 21/08/2013, à 01:55

aduxas

Re : utilisation dans un script de "grep" et "awk" pour imprimer dans un fi

Tu fais le tout avec awk:

foreach filename (*_conv) mri_segstats --subject ${filename} --etiv-only | awk '/subject/{sujet=$4} /atlas_icv/{print sujet,$4}' >> fichier.txt end

Note la redirection avec >>  ce qui veut dire qu'il faut effacer le fichier avant de faire un nouvel essai, sinon ça continue à s'accumuler.

Hors ligne

#3 Le 21/08/2013, à 18:31

Salim86

Re : utilisation dans un script de "grep" et "awk" pour imprimer dans un fi

Merci beaucoup pour ta réponse aussi rapide.
ça marche vraiment parfaitement.
Bonne journée. J'apprécie beaucoup ce forum ou on répond rapidement de façon très précise.
Charles

Hors ligne