CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Besoin d'aide pour la commande 'expr'

asnlman
asnlman
Niveau 7
29 septembre 2005 à 18:00:49

Bonjour à tous,

Je débute sous Unix et je dois rendre pour lundi divers scripts.
Je bloque sur les expressions régulières. Je fais appel à vous car j´imagine que vous maitrisez Unix/Linux :D

Comment extraire ce qui précède le . d´un fichier (dans mon exercice, c´est un .tif) avec expr?
Par exemple, pour maison.jpg, qu´il ne reste que maison.
Je dois absolument utiliser expr.

Merci d´avance (si vous pouvez expliquer en même temps ce n´est pas de refus).

Bigloo
Bigloo
Niveau 10
29 septembre 2005 à 18:26:41

C´est très technique pour un débutant, mais tu sembles capable d´écrire "expressions régulières" sans te tromper, alors on va dire que tu sais faire. Note : moi je suis pas étudiant (d´ailleurs t´étudies où pour faire des trucs si sympas ?) et je peux me tromper.

Commençons par le plus simple : la syntaxe d´utilisation de expr. Elle est de la forme

expr phrase : recherche

où recherche est une regexp (ça tombe plutôt bien).

Ensuite, il faut savoir ce que nous cherchons : un pwin ("."). Seulement, tu n´ignores pas que le point a une valeur particulière dans les expressions régulière : il signifie n´importe quel caractère. Ainsi si nous faisons

minipingouin:~ poulet$ expr maison.jpg : ´.´
1

expr va renvoyer l´emplacement (à partir de 1 et pas de zéro) du premier caractère qu´il trouvera. Ce qui ne nous intéresse pas.

Nous devons donc faire comprendre à expr que nous ne cherchons pas un caractère n´importe lequel, mais bien un point ("."). Tu connais surement ça, il faut l´échapper à l´aide du caractère \, ce qui nous donne

minipingouin:~ poulet$ expr maison.jpg : ´\.´
0

Naturellement ce n´est pas fini. Il faut faire comprendre à expr que le point en question peut être précédé par d´autres caractères : en plaçant un autre point, suivi d´un astérisque * (pour dire qu´il peut y´en avoir un, deux, zéro ou plusieurs)

minipingouin:~ poulet$ expr maison.jpg : ´.*\.´
7

Et là expr nous renvoie la position du point. Tu peux compter, il a bon.

C´est important que tu aies compris jusqu´ici. Maintenant voyons ce qui a du te bloquer (man expr la prochaine fois) : on veut que expr nous renvoie une phrase, pas un emplacement. Pour cela, il faut utiliser une commande spéciale que tu verras en temps et en heure dans les expressions régulières : \(...\) où les ... sont ce que tu veux.

Elle a diverses utilités, ici elle va simplement faire afficher "maison". Ici, c´est le texte entre les \( et \) qui va être affiché.

minipingouin:~ poulet$ expr maison.jpg : ´\(.*\)\.´
maison

Compris ? Si jamais il te manque un truc, n´hésite pas à redemander.

Pour t´entraîner, tu peux chercher à faire d´autres expressions :

- pour gérer les noms de fichiers commençant par un .
- pour gérer les noms de fichiers contenant deux extensions (maison.jpg.zip)

asnlman
asnlman
Niveau 7
29 septembre 2005 à 18:36:39

2e année de DUT Informatique.
C´est pas mon truc tout ça, je préfère C++ ou encore Java (et je maitrise au moins :d).

Enfin, je voulais te remercier du fond du coeur pour cette réponse claire et précise, bien plus que sur les dizaines de sites pros catalogués comme "pédagogiques"...
Je repasserai à l´occasion si j´ai d´autres ennuis.

Amicalement,

Bigloo
Bigloo
Niveau 10
29 septembre 2005 à 18:38:09

"C´est pas mon truc tout ça, je préfère C++ ou encore Java (et je maitrise au moins :d). "
-> Merde t´avais l´air d´un gars bien XD.

Oué tu repasses quand tu veux moi j´ai que ça à faire.

Sache que les regexp sont utilisables partout (C++, Java, PHP, Python ( :coeur: ) ...)

Scullder
Scullder
Niveau 10
29 septembre 2005 à 22:02:21

Bonjour
Pour les expressions régulières, il y a l´excellent site http://www.expreg.com/
Même si c´est surtout expliqué pour PHP ( :coeur: :-d), c´est très bien.
J´ai même une expression régulière presque à moi sur ce site : http://expreg.com/voir57
:-d

Potentat
Potentat
Niveau 6
30 septembre 2005 à 02:12:28

asnlman

c´est quoi ton école qu on y ailes pas ?

Bigloo
Bigloo
Niveau 10
30 septembre 2005 à 07:44:27

Z´êtes fous c´est chuper bien les regexp.

Scullder> Pas mal :coeur:

asnlman
asnlman
Niveau 7
30 septembre 2005 à 09:24:34

C´est un IUT d´informatique à Nancy.
Rassurez vous, c´est que 2h par semaine.

Scullder
Scullder
Niveau 10
01 octobre 2005 à 19:06:09

A part que c´est illisible et que c´est chaud à debugger wé c´est bien lol :)

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment