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)

#1 Le 28/03/2010, à 10:20

sali10

ecrire un script

bonjour tout le monde

je voulais ecrire un script en C , qui manipule un fichier texte, il doit lire le fichier et faire des modification par exemple a chaque fois qu'il rencotre le mot 'a5b6 il le remplace par ahbv....comment proceder?

Hors ligne

#2 Le 28/03/2010, à 10:47

Jean-Julien

Re : ecrire un script

J'ai l'impression que tu débutes. smile

Il n'existe pas de script en C, le C est un langage compilé.
Le python, par contre, est un langage interprété qui utilise des scripts.

Dans ton cas, je pense qu'écrire ce genre d'utilitaire en python est une bonne solution.
Utiliser le C, si ce n'est dans un but didactique, équivaut à se compliquer la vie.

Il y a là tout ce dont tu as besoin.
http://www.inforef.be/swi/python.htm

Amicalement, JJC.

Hors ligne

#3 Le 28/03/2010, à 11:18

francoisp31

Re : ecrire un script

ou tu peux travailler en direct sans script mais avec une commande de manipulation de chaine par exemple avec sed

sed -i "s/a5b6/ahbv/g" nom_du_fichier

Que les puces d'un millier de chiens galleux infeste le cul de celui qui osera vous gacher ne serai ce
qu'une seule journée de votre vie et que les bras lui soient trop court pour qu'il puisse se le gratter.

Hors ligne

#4 Le 28/03/2010, à 18:54

AnsuzPeorth

Re : ecrire un script

Jean-Julien a écrit :

J'ai l'impression que tu débutes. smile
....
Dans ton cas, je pense qu'écrire ce genre d'utilitaire en python est une bonne solution.

Je ne donne pas souvent mon avis sur ce genre de questions, mais personnellement je pense, à part si sali10 veut se lancer vraiment dans la programmation, python n'est pas une si bonne idée.
Les scripts bash sont bien plus appropriés, plus accessibles, et performants tout de même.
Dans ces scripts, on peut utiliser des outils comme le propose francoisp31 (sed), plus facilement qu'en python.

J'aime beaucoup le python, mais il faut reconnaitre que le bash, pour une première approche, est bien mieux.

Un petit exemple:
en bash

grep 'machin' /home/fichier

En python, c'est pas la même histoire ...

f=open('/home/fichier','r')
for ligne in f:
    if 'machin' in ligne:
        print ligne
f.close()

C'est sur qu'avec le python, on 'dirige' vraiment ce que l'on fait, mais ca peut décourager au début, car il faut assimiler beaucoup de chose avant de faire ce que l'on veut.

Enfin, ce n'est que mon avis smile


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#5 Le 28/03/2010, à 19:48

Link31

Re : ecrire un script

import re; re.findall('machin', open('/home/fichier', 'r').read(), re.M)

Ou plus proprement :

def grep(pat, file):
     import re
     print(re.findall('.*%s.*' % pat, open(file, 'r').read(), re.M))

grep('machin', '/home/fichier')

Il suffit que grep soit défini quelque part...

Hors ligne

#6 Le 28/03/2010, à 20:36

AnsuzPeorth

Re : ecrire un script

L'exemple python que j'ai donné, n'était qu'un exemple pour comparer. Cette façon de procéder (boucle), on le trouve dans tout les tutos, donc un débutant y passera forcement.

Avant qu'un débutant s'intéresse au module re et aux expressions régulières, il se passera du temps .

Tes exemples, optimisés, certes, confirme bien la simplicité de bash ...!

Comparer a un simple grep ou sed ....

ps: Je ne pense aucun mal de python, bien au contraire, je m'y suis mis depuis peu et j'aime bien ça, mais justement, avec mes yeux de débutants, le bash me parait bien plus accessible pour commencer. C'est sur, j'aurais du me mettre tout de suite à python plutôt que de passer par la case bash, j'aurais économisé du temps, mais je pense que l'approche de python m'aurais refroidi direct, alors qu'en bash, on arrive rapidement a quelque chose (même si c'est pas tjrs super propre et optimiser, on un résultat assez facilement, ca motive.) C'est vrai, on peut penser aussi en terme de bonnes ou mauvaises habitudes qu'on peut prendre avec un langage, c'est pour ça que je précise dans mon post, tout dépends des objectifs finaux ...


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#7 Le 29/03/2010, à 03:07

Link31

Re : ecrire un script

AnsuzPeorth a écrit :

Tes exemples, optimisés, certes, confirme bien la simplicité de bash ...!

Non, grep n'est pas du bash, c'est un appel à un programme C. On peut faire des system("grep ...") en Python également et dans la plupart des langages...

Montre-nous donc comment tu ferais un grep en pur bash, sans programmes externes.
(ça n'a pas grand chose à voir avec la question de départ, mais si tu tiens à faire des comparaisons, fais-les correctement wink)

Hors ligne

#8 Le 29/03/2010, à 14:59

gser

Re : ecrire un script

Bonjour
Désolé de venir mettre mon petit grain de sel dans cette discussion..
Connaissez-vous cet interpréteur:  le REXX qui tourne sur à peu près toutes les plates-formes (Unix, Linux, windows et même les mainframes).
Pour les allergiques profonds il souffre d'une tare (il a été conçu par IBM... ce qui explique d'autre part que je le connaisse bien!!!)), il est d'un puissance redoutable, on peut à peu près tout faire avec... (et même plus!)
D'une grande souplesse par ses variables seulement interprétées par le contexte
par exemple on peut écrire dans un même script:

say bonjour      ===> va écrire bonjour
bonjour = bonsoir
say bonjour      ===> va maintenant écrire bonsoir
bonjour = 2
bonjour = bonjour*3
say bonjour      ===> va écrire 6

Voici le script source et son exécution:

/**/
say bonjour
bonjour = bonsoir
say bonjour
bonjour = 2
bonjour = bonjour*3
say bonjour

Console:

BONJOUR
BONSOIR
6

Il y a bien sur toutes les fonctions pour traiter les exemples ci-dessus en python comme en bash, et permet de passer et paramétrer toutes les commandes systèmes...
C'est un langage procédural (bloc do/end, if/then/else, fonctions, sous-programmes etc etc)

Aujourd'hui, pour simplifier,c'est un logiciel gratuit ( j'ignore son vrai statut, libre/partagé ?)

Je pense qu'il vaut le détour
A+
Georges


Proc: Intel E6700, CM: ElitGroup 965T_A  ram: 2GB 
HDD: 2x Hitachi SATA 320GB,
HDD: 2x Hitachi SATA 1TB,
Carte graphique ATI Radeon X1950, écran SAMSUNG 931BW

Hors ligne

#9 Le 29/03/2010, à 17:41

AnsuzPeorth

Re : ecrire un script

Méa-culpa, méa-culpa, j'ai encore utilisé une expression inadéquate ...

Il ne fallait pas entendre bash, mais script bash avec ses commandes unix (euhhh, unix, gnu ou linux, on les mets dans quelle couche ces commandes, je ne voudrais pas qu'on me tombe dessus à bras raccourci car je n'ai pas utilisé le bon mot !)

Si je suis intervenu dans ce post, c'est que simplement il s'adressait à un débutant, et que je suis plus pret de cette personne comparé à toi qui maitrise beaucoup, beaucoup mieux les langages et l'informatique dans son ensemble que moi !
Peut être qu'a travers tes yeux de personne averti, le python ou le C sont plus clair que le bash et ses commandes, mais pour un noob comme moi, je trouve le bash et ses commandes plus simple et accessible, je voulais juste en arriver là ... !

Je le dis et je le répète sur la plupart de mes posts, je n'ai aucune prétention, je veux juste partager mes maigres connaissances et expériences....

Link31 a écrit :

Non, grep n'est pas du bash, c'est un appel à un programme C. On peut faire des system("grep ...") en Python également et dans la plupart des langages...

Je sais bien que c'est pas du bash, mais a ce moment là, bash est écrit en quel langage ? Et python et ses modules ? On en fini pas, ou plutot si, on en fini par dire que tout (ou presque) et du C ...!

Link31 a écrit :

Montre-nous donc comment tu ferais un grep en pur bash, sans programmes externes.
(ça n'a pas grand chose à voir avec la question de départ, mais si tu tiens à faire des comparaisons, fais-les correctement wink)

C'est sur, quelque soit le langage, on en reviens au même, on lit un fichier, on vérifie si on ne trouve pas un pattern dans la ligne (ou caractère), et on l'affiche si concordance ... Ensuite, certains langages offrent des 'raccourcis', comme le module re, ou la commande grep (qui n'est pas un langage, mais qui fait qd même partie du package utilisable en bash sous linux, en général ...! Et qui est qd même plus simple à manipuler que le module re, enfin je trouve .... ).

AnsuzPeorth a écrit :

Je ne donne pas souvent mon avis sur ce genre de questions

Et je pense ne plus le donner du tout, même si je trouve que la vision d'un non-initié peut parfois être utile à d'autres non-initiés ... smile !!!


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#10 Le 29/03/2010, à 17:57

Link31

Re : ecrire un script

C'est vrai que la question de départ était ambiguë : "un script en C"... On a donc trois solutions :
- les scripts shell, qui se basent pour une très grande partie sur des appels à des programmes externes
- le C, où l'utilisation correcte de programmes externes est particulièrement difficile
- les langages "intermédiaires", comme le Python

Il aurait été plus judicieux de comparer directement les scripts shell et le C wink

Dernière modification par Link31 (Le 29/03/2010, à 18:00)

Hors ligne

#11 Le 29/03/2010, à 18:16

AnsuzPeorth

Re : ecrire un script

Link31 a écrit :

Il aurait été plus judicieux de comparer directement les scripts shell et le C wink

Je connais pas du tout le C (j'ai du lire 2 chapitres d'un quelconque tuto pour être calmé tout de suite !)

Mais l'idée que je m'en fais, serait de comparer un avion de chasse sans aide technique (gestion de memoire, pointeur & co) à un petit byplace de tourisme avec pilotage automatique ...:)

Ben...avec un petit byplace, on vole qd même, moins vite, mais on vole wink


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#12 Le 29/03/2010, à 18:28

gser

Re : ecrire un script

Je crois que la question initiale de notre ami Sali10 n'est pas ambiguë, il faut lui répondre clairement que le langage C est un langage pour programmeur professionnel (ou en devenir!) on pourrait le comparer à JAVA ou .... à l'assembleur pour ceux qui veulent remonter au bigbang de l'informatique mais c'est un autre monde sans rapport avec les interpréteurs ou langages de script
Bien sur les interpréteurs utilisent des fonctions écrites en C, mais c'est transparent pour l'utilisateur.
Si Sali10 ne connaît aucun de ces interpréteurs, cela vaut le coup pour lui de regarder un peu le REXX (ses fonctions de debugging sont très agréables à utiliser), je veux bien lui mettre le pied à l'étrier pour ces premiers pas, en cherchant dans mes archives je dois bien retrouver un bout de code qui fait a peu près ce qu'il cherche...


Proc: Intel E6700, CM: ElitGroup 965T_A  ram: 2GB 
HDD: 2x Hitachi SATA 320GB,
HDD: 2x Hitachi SATA 1TB,
Carte graphique ATI Radeon X1950, écran SAMSUNG 931BW

Hors ligne

#13 Le 29/03/2010, à 20:02

AnsuzPeorth

Re : ecrire un script

J'ai été voir ce qu'est le REXX par curiosité, c'est étrange comme langage, mais une fois maitrisé, ca doit être rapide d'écrire du code, pas de crochets, accolades & co en profusions !

Dans wikipédia, ils disent qu'il y a une version open-source.

Mais sous ubuntu, faut l'installer, contrairement au bash ou python.


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#14 Le 29/03/2010, à 20:38

gser

Re : ecrire un script

La facilité d'écriture est effectivement sa principale qualité, surtout avec la fonction trace qui te donne les contenus des variables avant et/ou après substitution... c'est donc facile à débugguer


Proc: Intel E6700, CM: ElitGroup 965T_A  ram: 2GB 
HDD: 2x Hitachi SATA 320GB,
HDD: 2x Hitachi SATA 1TB,
Carte graphique ATI Radeon X1950, écran SAMSUNG 931BW

Hors ligne

#15 Le 29/03/2010, à 23:13

sali10

Re : ecrire un script

je vous remrcie tous pour les reponses..oui je suis debutante dans la programmation shell, et je pense le chemin est trop long pour maitriser et devenir proffesionnelle.....

ps: pour 'gser' , je voulais vous rappeler de menvoyer lexemple..et je vous remercie beaucoup



Votre amie 'sali'

Hors ligne

#16 Le 30/03/2010, à 12:31

gser

Re : ecrire un script

pour Sali
Voici comme exemple un bout de rexx destiné à écrire sur le terminal le contenu d'un fichier
(soit tout bêtement l'équivalent de la commande linux "nl monfichier.txt"   !!!!)

/********************************************************/
/*********       Lecture du fichier passé en argument     ******************/
/*************************************************************/

/* trace i */
   FichIni = Arg(1)
   /* Ouverture du Fichier */
   Call linein FichIni,1,0
   Compteur=0
   Do While lines(Fichini)<>0
     ligne=linein(fichini)
     Compteur=compteur+1
say "ligne Nr" compteur "===> " ligne
     /*developper ici le traitement de la ligne */
     /*et sa mise à jour */
   END

tout ce qui est /* entre ceci */  sont des commentaires

une fois rexx installé, tu taperas par exemple

rexx essai.cmd essai.txt
ligne Nr 1 ===>  aaa1 aaaaa2  aaaaaaa3  aaaaaaaaaa4
ligne Nr 2 ===>  bb1 bbbbb2 b3 bbbbbbbbb4 bbb5

Par contre, il te faut installer REXX qui n'est pas dans les packages Ubuntu

Je pense que tu vas trouver sur le net des .deb  qui devront te satisfaire, mais moi-même débutant en Linux maintenant (à la retraite!) je ne peux  te conseiller (à l'époque j'avais des collègues superpro Unix et Linux qui m'installaient tout en version propriétaire ....), mais t'aider quand même car le sujet m'intéresse.
regarde pour t'amuser ce post:
http://forum.ubuntu-fr.org/viewtopic.php?id=190173&p=1
quand je parlais des allergies

Pour revenir à Rexx, c'est un langage qui s'apprend ... en cherchant sur le net
cherche sur "regina rexx" tu trouveras le produit et les docs en pdf

Un monde s'ouvre à toi: la programmation facile sans souci
Bon courage
Georges


Proc: Intel E6700, CM: ElitGroup 965T_A  ram: 2GB 
HDD: 2x Hitachi SATA 320GB,
HDD: 2x Hitachi SATA 1TB,
Carte graphique ATI Radeon X1950, écran SAMSUNG 931BW

Hors ligne

#17 Le 30/03/2010, à 16:19

sali10

Re : ecrire un script

merci GEORGE

pardonnez moi jai pas vu ta reponse ici dans le forum....merci beaucoup

Hors ligne

Haut de page ↑