Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

nombre réponses : 15

#0 -1 »  utilisation dans un script de "grep" et "awk" pour imprimer dans un fi » Le 21/08/2013, à 00:52

Salim86
Réponses : 2

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

#1 Re : -1 »  utilisation dans un script de "grep" et "awk" pour imprimer dans un fi » Le 21/08/2013, à 18:31

Salim86
Réponses : 2

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

#2 -1 »  faire une boucle en tcsh qui n'écrase pas le résultat » Le 02/12/2012, à 23:00

Salim86
Réponses : 5

Bonsoir,

La question que je me pose est la suivante :

Je pars d'un script

foreach filename (t1_????????)
asegstats2table --subjects ${filename} \
  --segno 11 12 13 \
  --tablefile asegstats.txt 
end

C'est dans le cadre pour un logiciel d'imagerie médicale (freesufer) que je l'utilise.

C'est le script qui me permet d'obtenir les résultats pour un grand nombre de sujets.

je dispose d'images d'irm qui s'appellent t1_???????? (wild card qui permet de prendre en compte tous les fichiers)
les résultats de chaque image doivent être importés dans un fichier qui s'appelle asegstats.txt

le problème c'est qu'avec ce script (fait en tcsh), à chaque fois que le logiciel fait une boucle, il efface le résultat mis dans asegstats de la boucle précédente.

donc au final je me retrouve avec les résultats pour la dernière image.

Y a t il une possibilité de faire en sorte que le logiciel n'écrase pas le résultat pour que je puisse avoir dans mon fichiers texte tous les résultats des images que je veux analyser.

Par image j'entends images d'IRM.

Merci Beaucoup,

Bonne soirée

Charles

PS : il ne m'a pas semblé que la question ait déjà été posée, mais c'est difficile de trouver grâce à la fonction recherche ce genre d'information

Sachant que quand je tape le script dans le terminal en remplaçant $filename par des noms de fichiers (t1_37481019  t1_098UJH27 etc..) j'ai le résultat que je veux et le résultat de n+1 n'écrase pas le résultat de n (où n est une imager d'IRM)

#3 Re : -1 »  faire une boucle en tcsh qui n'écrase pas le résultat » Le 03/12/2012, à 01:49

Salim86
Réponses : 5

Bonsoir,

Merci beaucoup pour la rapidité de ta réponse. Merci d'avoir regardé dans la documentation, tu utilises le logiciel aussi ?
J'ai déjà essayé ce que tu propose, mais malheureusement les wild mask (de type ???????) ne sont pas pris en charge par le bash tcsh, par contre il fonctionne bien dans le script.
il faut mettre le nom de chaque image sans wild mask.

une autre option à laquelle je pensais sans pouvoir la concrétiser serait de faire un fichier texte à part et de faire en sorte que le script renvoie à ce fichier texte avec la fonction "cat".
mais si ça se trouve ça serait le même problème.

Si tu as une autre idée, ou même une piste je suis preneur.

Bonne soirée et bonne semaine

Charles

#4 Re : -1 »  faire une boucle en tcsh qui n'écrase pas le résultat » Le 03/12/2012, à 13:11

Salim86
Réponses : 5

oui tout à fait  : quand je fais ls t1_???????? ça marche sans pb.
je vais essayer ce que tu me conseilles ce soir

#5 -1 »  question sur Wildcard / Wildmask un peu complexe » Le 01/12/2012, à 14:47

Salim86
Réponses : 2

Bonjour,

Après plusieurs recherches sur internet sur les wild card, je n'arrive pas à trouver de réponse à ma question.

j'amerai sélectionner un certain nombre de fichiers : j'en ai deux types :

t1_exemple1
t1_exemple2
t1_exemple3

que je veux selectionner

et

t1_exemple1_6789
t1_exemple2_5348
t1-exemple3_567890.nii


donc si je fait    ls t1*  je les ai tous...

En fait je chercherai un moyen de limiter le nombre de caractères après le t1, pour que le terminal prenne t1 puis tout les fichiers avec 9 caractères ensuite.

est-ce possible.

Je ne peux pas sélectionner de caractère avec la wild card parce que j'ai a peu près 200 fichiers, j'ai l'impression que seul le nombre de caractère total permet de discriminer les fichiers que je souhaite sélectionner.

j'utilise tcsh (pas le bash classique)

J'espère avoir été clair.

Merci de votre aide

Bon week end

Charles.

#7 -1 »  carte mère GA-DS25TUD et linux : besoin d'aide » Le 16/11/2012, à 02:00

Salim86
Réponses : 4

Bonjour,

Je suis nouveau sur le forum, et j'ai déjà cherché pendant très longtemps sur google et sur le forum la réponse à ma questions.

Je suis un utilisateur d'ubuntu et j'ai acheté un ordinateur récemment.
Sa carte mère (avec processeur intégré d'après ce que je comprends) et une GA-DS25TUD

J'ai installé ubuntu facilement.

J'ai commencé à me servir de mon ordinateur, mais lorsque je fais marcher mon logiciel d'imagerie cérébrale (fsl) mon ordinateur est très très lent.

A titre de comparaison mon vieux portable sony acheté il y a 5 ans est plus rapide.

En faisant un "sudo dmidecode" j'obtiens ça dans la partie processor information

Version: Intel(R) Atom(TM) CPU D525

Max Speed: 4000 MHz
Current Speed: 1800 MHz

Alors que pour mon vieux portable j'ai max speed = current speed : 2260 Hz.

Comment expliquer que mon ordinateur soit si lent et le différentiel entre les deux vitesses.

Je me suis dit que c'était un pb de driver (mais j'ai lu sur le forum que normalement linux installe automatiquement tous les divers), mais je ne trouve pas de driver linux-spécifique pour ma carte mère.

Quelqu'un peut-il m'aider, j'ai besoin de me servir de cet ordinateur pour travailler.

Merci beaucoup

Charles

#8 Re : -1 »  carte mère GA-DS25TUD et linux : besoin d'aide » Le 16/11/2012, à 02:14

Salim86
Réponses : 4

Merci de ta réponse,

la commande "free" me donne, normalement j'ai 2Go de rame

Mem:       2051148    1648300     402848          0      39424     972680
-/+ buffers/cache:     636196    1414952

Je comprends que ça dépend des images, mais ce qui n'est pas logique c'est qu'un ordinateur portable acheté il y a 5 ans fasse mieux que du matériel assez réçent, qui plus est sur un ordinateur fixe non ? (honnêtement je ne sais pas)

#9 Re : -1 »  carte mère GA-DS25TUD et linux : besoin d'aide » Le 16/11/2012, à 02:16

Salim86
Réponses : 4

est ce que tu penses que c'est possible d'augmenter significativement la performance du CPU de quelque manière que ce soit, où j'ai juste à racheter un processus.

#10 -1 »  utiliser un grand nombre de fichier dans une boucle. » Le 13/10/2012, à 01:43

Salim86
Réponses : 6

Bonjour,

Il s'agit de mon premier post sur le forum. J'ai vraiment utilisé la fonction rechercher pour répondre à ma question : sans succès. Je n'arrive pas à décrire ce que je veux faire.
Ma question peut sembler triviale mais je ne trouve pas de solution pour l'instant. C'est très simple.

Je pars d'un script que j'ai fait et qui fonctionne.

for filename in fichier1 fichier2 fichier 3; do first_flirt $filename ${filename}_to_std_sub -cort

(pour trois fichiers je demande d'exécuter une commende).

Maintenant j'ai 100 fichiers au lieu de 3.

Donc j'aimerai créer un fichier texte avec le nom de mes 100 fichiers et reprendre mon code.

Je n'arrive à faire en sorte que l'ordinateur exécute la commande pour mes 100 fichiers (pour faire le renvoi vers un fichier texte).

Je sais que c'est possible et il me semblait qu'il fallait utiliser "cat" mais je ne suis pas sur.

Merci beaucoup d'avance.

Salim.

#11 Re : -1 »  utiliser un grand nombre de fichier dans une boucle. » Le 13/10/2012, à 11:38

Salim86
Réponses : 6

merci beaucoup pour la rapidité de la réponse !

ça répond exactement à la première partie de ma question.

effectivement ce script me permet de mettre dans un fichier new_file tout les fichiers que je veux analyser avec ma commande.

donc la deuxième question est : comment dois-je faire pour appeller cette liste de fichier quand je veux exécuter cette commande.

un truc dans le style de

for filename in new_file ; do first_flirt $filename ${filename}_to_std_sub -cort

Merci beaucoup,
ça fait une semaine que je cherche la réponse à cette question.

#12 Re : -1 »  utiliser un grand nombre de fichier dans une boucle. » Le 13/10/2012, à 12:15

Salim86
Réponses : 6

Merci beaucoup,

Je ne comprends pas comment j'ai pu ne pas penser à utiliser un wildmask dans mon script. lorsque je le faisais dans le terminal ça ne marchait pas, mais dans le script ça marche.

En tout cas tu m'as beaucoup aidé, merci beaucoup.

Si tu es à paris, je te paye un bière aujourd'hui !

#13 Re : -1 »  utiliser un grand nombre de fichier dans une boucle. » Le 14/10/2012, à 02:08

Salim86
Réponses : 6

effectivement.

par contre j'ai eu un autre ennui.
je ne sais pas ce qui m'a pris mais j'ai voulu essayer de passer en mode root (pour modifier le bashrc). j'ai fait sudo su et ensuite j'ai ouvert le bashrc.
ensuite j'ai paniqué, je me suis dit que ça me dépassait j'ai fermé le terminal à la hussarde (la croix en haut à droite).

maintenant quand j'essaye de faire marcher une commande de mon logiciel qui a toujours fonctionné je me prends un "permission denied"

est-ce possible que ma manipulation hasardeuse puisse avoir cette conséquence ?

existe-t-il un moyen d'annuler toutes les modifications que j'ai pu faire dans bashrc (j'en avais déjà faites avant mais ça n'avait pas posé de pb) sans réinstaller tout ubuntu (j'ai eu bcp de mal à installer le logiciel dont je me sers).

je dois avoir l'air un peu ridicule, mais je suis vraiment très ennuyé de ce "permission denied" qui m'empêche de finir mon travail.

Merci d'avance,

salim

#14 Re : -1 »  co-installation » Le 13/10/2012, à 01:45

Salim86
Réponses : 1

je te suggère de télécharger virtualbox qui peut te permettre d'utiliser plusieurs système sur un ordinateur.