Bonjour à tous,
Je débute sous linux et j'aurais quelque questions à vous poser.
voici les questions :
je dois faire un script qui doit afficher les fichiers et répertoires du dossier passé en paramètre dans l'ordre décroissant en nombre de caractère.
Exemple :
$ ./script.sh /bin
plymouth-upstart-bridge
running-in-container
dbus-cleanup-sockets
ntfsdump_logfile
ntfs-3g.secaudit
ulockmgr_server
ntfs-3g.usermap
vmmouse_detect
Comment pourrais-je le faire ?
Et pour les autres questions :
Le fichier d'entrée est le fichier exo1.xml.
le fichier se présente comme ceci :
<bot version="0.1.4a" formulationsCount="3566">
<matchingGroups>
<group externalId="ad52edb4-02da-42b7-b8c4-4688035421f4" language="French">
<name>1er match</name>
<canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
<formulations/>
</group>
<group externalId="04667e81-a6c1-48b6-bf9b-eb9aef500cbc" language="French">
<name>2e match</name>
<canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
<formulations/>
</group>
<group externalId="e9236f85-d239-440b-9e79-ed7cbc9f0fef" language="French">
<name>3e match</name>
<canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
<formulations>
<formulation sentence="1000P"/>
<formulation sentence="LP10PSMSB/EN"/>
<formulation sentence="1000P"/>
</formulations>
</group>
<group externalId="a574ebb0-6a7a-46a5-8f11-47ab82a59452" language="French">
<name>4e match</name>
<canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
<formulations>
<formulation sentence="1000W"/>
<formulation sentence="LP10WSLSB/EN"/>
<formulation sentence="1000W"/>
</formulations>
</group>
<group externalId="dbd532c3-7ca8-418b-84c8-feba9aa2fc29" language="French">
<name>5e match</name>
<canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
<formulations>
<formulation sentence="230MXN"/>
<formulation sentence="LH23PTTMBC/EN"/>
<formulation sentence="230MXN"/>
</formulations>
</group>
<group externalId="b97d17ad-c874-4e9a-bdf7-4befea339ef3" language="French">
<name>6e match</name>
<canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
<formulations>
<formulation sentence="230MXN"/>
<formulation sentence="LH23PTSMBC/EN"/>
<formulation sentence="230MXN"/>
</formulations>
</group>
<group externalId="c26f4a02-ed31-44a5-ba00-7e306a91fbef" language="French">
<name>7e match</name>
<canBeUsedByOtherGroups>false</canBeUsedByOtherGroups>
<formulations>
<formulation sentence="230TSN"/>
<formulation sentence="LH23PTVMBC/EN"/>
<formulation sentence="230TSN"/>
</formulations>
</group>
<group externalId="3feceacf-a080-4080-b177-19960aad342a" language="French">
<name>8e match</name>
<canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
<formulations>
<formulation sentence="230TSN"/>
<formulation sentence="LH23PTRMBC/EN"/>
<formulation sentence="230TSN"/>
</formulations>
</group>
<group externalId="303fe41a-5512-43f4-87b1-c020dd066e65" language="French">
<name>9e match</name>
<canBeUsedByOtherGroups>false</canBeUsedByOtherGroups>
<formulations>
<formulation sentence="2433BW"/>
<formulation sentence="LS24CMKKFV/EN"/>
<formulation sentence="2433BW"/>
</formulations>
</group>
<group externalId="78d4478b-5051-4f44-9d99-5216568452b1" language="French">
<name>10e match</name>
<canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
<formulations>
<formulation sentence="320MX-3"/>
<formulation sentence="LH32HBPLBC/EN"/>
<formulation sentence="32'' Moniteur LCD 320MX-3 usage standard"/>
</formulations>
</group>
<group externalId="857d2450-f380-4693-b1b8-c0180bb9c82f" language="French">
<name>11e match</name>
<canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
<formulations>
<formulation sentence="320MXN-3"/>
<formulation sentence="LH32HBTLBC/EN"/>
<formulation sentence="32'' Moniteur LCD 320MXn-3 PC embarqué"/>
</formulations>
</group>
<group externalId="1bff58a5-88e6-4be7-9649-051b245acf2d" language="French">
<name>12e match</name>
<canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
<formulations>
<formulation sentence="320MXN-3"/>
<formulation sentence="LH32HBSLBC/EN"/>
<formulation sentence="32'' Moniteur LCD 320MXn-3 PC embarqué"/>
</formulations>
</group>
<group externalId="ebce9c65-c3f4-415a-bd9c-3753017d40e4" language="French">
<name>13e match</name>
<canBeUsedByOtherGroups>false</canBeUsedByOtherGroups>
<formulations>
<formulation sentence="320TSN-3"/>
<formulation sentence="LH32CRSMBC/EN"/>
<formulation sentence="320TSN-3"/>
</formulations>
</group>
<group externalId="ba45aba9-4947-4a11-be27-7832a81093e5" language="French">
<name>14e match</name>
<canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
<formulations>
<formulation sentence="320TSN-3"/>
<formulation sentence="LH32CRTMBC/EN"/>
<formulation sentence="320TSN-3"/>
</formulations>
</group>
<group externalId="6417ce7d-b1ac-4773-85bc-9d60f2d22d05" language="French">
<name>15e match</name>
<canBeUsedByOtherGroups>true</canBeUsedByOtherGroups>
<formulations>
<formulation sentence="400CXN"/>
<formulation sentence="LH40MGTLGD/EN"/>
<formulation sentence="400CXN"/>
</formulations>
</group>
</matchingGroups>
</bot>
Le script doit fournir le fichier exo1.csv en sortie, si possible en un minimum de ligne
le fichier de sortie se présente comme ceci :
ad52edb4-02da-42b7-b8c4-4688035421f4 1er match
04667e81-a6c1-48b6-bf9b-eb9aef500cbc 2e match
e9236f85-d239-440b-9e79-ed7cbc9f0fef 3e match
a574ebb0-6a7a-46a5-8f11-47ab82a59452 4e match
dbd532c3-7ca8-418b-84c8-feba9aa2fc29 5e match
b97d17ad-c874-4e9a-bdf7-4befea339ef3 6e match
c26f4a02-ed31-44a5-ba00-7e306a91fbef 7e match
3feceacf-a080-4080-b177-19960aad342a 8e match
303fe41a-5512-43f4-87b1-c020dd066e65 9e match
78d4478b-5051-4f44-9d99-5216568452b1 10e match
857d2450-f380-4693-b1b8-c0180bb9c82f 11e match
1bff58a5-88e6-4be7-9649-051b245acf2d 12e match
ebce9c65-c3f4-415a-bd9c-3753017d40e4 13e match
ba45aba9-4947-4a11-be27-7832a81093e5 14e match
6417ce7d-b1ac-4773-85bc-9d60f2d22d05 15e match
Comment et avec quel commande je pourrais le faire ?
Dans l'attente de vos réponses en vous remerciant d'avance.
# lire son cours et mettre en application
Posté par NeoX . Évalué à 3.
cela ressemble quand meme enormement à un TP ou un exo.
donc commencer par lire son cours pour trouver quels outils utiliser.
des pistes de reflexions :
pour le 1. je ferais un script perl stockant la chaine et sa longueur dans un tableau, puis un tri du tableau par taille, et un affichage du tableau trié
pour le 2. ca ressemble à un compteur, qui chaque fois qu'il trouve une ligne avec le 'externalId' l'affiche et ajoute 1
[^] # Re: lire son cours et mettre en application
Posté par totof2000 . Évalué à 2.
Pour le 1 il y a plus simple : en une ligne de shell ça peut être fait : un ls avec l'option qui va bien pipé dans un sort avec clé sur le champ adequat (man ls man sort, avec l'option -k -n).
Pour le second, il ne s'agit pas d'un compteur mais du parsing du fichier xml. Un petit coup de awk devrait pouvoir faire l'affaire.
# Ce n'est pas bien de demander aux autres de faire ses exercices ....
Posté par totof2000 . Évalué à 2.
sinon : man wc, man ls …
Pour le second exo, on ne comprend rien, la syntaxe xml est passé à la trappe avec la mise en page wiki.
Enfin, une recherche google sur "cours shell unix" te donnera plein de sites pour apprendre.
Essaie de faire quelque chose à partir de tout ça. Si tu n'y arrives pas, reviens ici et poste nous ton code : on pourra t'aider à comprendre ce qui ne va pas. Sinon, si tu payes, je veux bien te faire tes exos (mais je suis facturé 600 euros/jour - avec journée de 7h30) donc indique-moi combien de temps tu peux payer:) ).
[^] # Re: Ce n'est pas bien de demander aux autres de faire ses exercices ....
Posté par totof2000 . Évalué à 5.
Je te passe le calcul à ce tarif, ça fait 80 euros de l'heure p our faire tes exercices, toute heure commencée est due. Sinon, s'il faut te donner des cours, je réduis fortement mes tarifs.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.