Effectivement (viens d'aller voir le help)... comme je le dis parfois, j'ai pas suivi les dernières évolutions du shell et j'ai donc des réflexes qui datent du Bourne originel. Mais bon, on peut parfaitement allumer un feu avec des silex...
Déjà dit![]()
Effectivement (viens d'aller voir le help)... comme je le dis parfois, j'ai pas suivi les dernières évolutions du shell et j'ai donc des réflexes qui datent du Bourne originel. Mais bon, on peut parfaitement allumer un feu avec des silex...
Déjà dit![]()
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
barbare ! troglodyte ! néanderthal !Mais bon, on peut parfaitement allumer un feu avec des silex...
![]()
Ce sont des fichiers texte que j'utilise sous Nedit
:/ ça nous donne toujours pas le vrai format.
c'est quoi Nedit ? ça donne quoi comme information par rapport au script que tu veux faire ?
Quand N_BaH te demandait le format, c'était un sous-entendu pour qu'avec le format tu expliques aussi quoi faire. Parce que "juste le format" ça répond pas à toutes nos interrogations
- le lien entre "DMP" et "dump" ? A priori le lien semble être ligne "n" du fichier 1 associée à la ligne "n" du fichier 2 donc cela signifie qu'on ne fait aucune recherche du type "lettres d, m et p obligatoirement présentes dans "dump" => la ligne (on va dire que chaque fichier ne contient qu'une ligne pour simplifier) du fichier 1 peut contenir "truc", la ligne du fichier 2 peut contenir "chose" ça matchera tout autant
- le lien entre "dump" et "explicite_pose_name-dump.txt" ? Juste rajouter "explicite_pose_name-" devant et ".txt" derrière ?
- pourquoi la chaine "DMP" du fichier 1 n'apparait plus au résultat final "explicite_pose_name-dump.txt" ? Comme l'a dit N_BaH, dans ce cas le fichier 1 ne sert à rien (on aura le même résultat en lisant simplement fichier 2)
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
J'avais pas vu, étant donner l'imbrication via un boucle...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $ printf '[%s %s]\n' $(paste l1 l2) [DMP dump] [BEZ benza]![]()
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
ce n'est pas tout à fait ça.
printf affiche les données qui lui sont passés en argument selon le format indiqué.
étant donné que la Substitution de commande n'est pas enclose entre guillemets, la sortie de paste se fait sur une seule ligne, et printf affiche simplement (selon le format indiqué) deux par deux.
ce qui, si on omet l'ajout des crochets, est inutile.![]()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $ printf "[%s %s]" waka "waka hé" its time for africa [waka waka hé][its time][for africa]$ printf "[%s %s]" $(echo 'waka "waka hé" its time for africa') [waka "waka][hé" its][time for][africa ]$
bon. tu démontres que les guillemets perdent leur effet "groupant", et qu'ils sont un caractère comme un autre, entre apostrophes.![]()
![]()
Oui c'est ça, deux par deux. Et quelque part il doit bien boucler pour les prendre deux par deux ces élements. C'est à ça que je pensais.
Elle aurait été "moins intelligente" tu l'appelais printf "[%s] [%s]-" 123 456 789 101 elle t'aurait affiché le premier "[123]-" puis le reste d'un bloc.
![]()
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
DMP est l'alias de dump, pour ne pas écrire des fichiers à nom à rallonge. Il est plus simple d'utiliser l’abréviation à trois lettres dans le nom. Le fichier "explicite_pose_name-dump.txt " qui contient des informations en rapport avec la structure chimique du dump.
nous, on le comprend (une fois qu'on a le contexte), mais un programme informatique ne le peut pas sans une "table d'équivalence".
et s'il existe une table d'équivalence, alors pourquoi utiliser deux autres fichiers ?!
la prochaine fois, expose simplement ton problème au lieu de faire des "périphrases" simplicistes, qui finalement ne simplifient pas la recherche d'une solution robuste et constructive.
« un problème clairement exposé est à moitié résolu. »
Je suis d'accord avec papajoker.
Il me semble plus pratique et plus prudent d'avoir un seul fichier qui précise, pour un nom abrégé (comme "BEZ"), quel est le nom complet correspondant (comme "benza").
Le séparateur peut être ce que tu veux (espace, tabulation, signe "=" ou ":", etc.).
De cette manière, si tu ajoutes ou retires un élément, tu as à manipuler un seul fichier et aucun risque de décalage.
Tu peux même facilement mettre des commentaires dans le fichier (alors qu'avec 2 fichiers...).
Ensuite, l'interprétation est simple:
Et si on obtient la clé d'une autre manière (par exemple extraite du fichier de coordonnées de molécules), on peut la retrouver dans le fichier de correspondance:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 $ cat alias-nom.txt DMP dump BEZ benza $ while read -r alias nom; do echo "Pour ${alias}, utiliser explicite_pose_name-${nom}.txt" done Pour DMP, utiliser explicite_pose_name-dump.txt Pour BEZ, utiliser explicite_pose_name-benza.txt
Désolé de faire grep+sed, je ne maîtrise toujours pas très bien les "sed -n" avec "p"...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 $ cat ./test2.sh #!/bin/bash cle=$1 echo "Vous avez choisi la clé '$cle'" nom=$(grep "^$cle " alias-nom.txt | sed -e "s/^$cle //") echo "Pour ${cle}, utiliser explicite_pose_name-${nom}.txt" $ ./test2.sh DMP Vous avez choisi la clé 'DMP' Pour DMP, utiliser explicite_pose_name-dump.txt
et je trouve ça beaucoup plus facile à lire.
Quant à l'efficacité, si c'est répété un million de fois, il vaudra peut-être mieux le coder en C...
C'est d'ailleurs le premier principe dans la normalisation des base de données. Si tu as deux tables reliées 1-1 alors ça veut dire que tu peux mettre tout dans une seule table.
Ok c'est dommage mais c'est pas super grave (de mon point de vue). Mais pense aussi à fgrep plus rapide (fast grep).
Euh... Tu as d'autres langages (exemple Python), plus simple que le C pour coder ce genre de travail et qui n'ont pas à rougir de leurs performances...
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Pas grave, on peut le faire uniquement avec grep:
Code : Sélectionner tout - Visualiser dans une fenêtre à part nom=$(grep -oP "^$cle \K.*" alias-nom.txt)![]()
![]()
![]()
Partager