Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2249 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] cmd simmliaire à cut ??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Perl] cmd simmliaire à cut ??

n°470107
vfqs
Posté le 28-07-2003 à 18:17:42  profilanswer
 

Slt all,
 
Y'a-t-il un code perl similaire à ce qui suit:
 
cut -d/ -f-2 fichier
 
Ex: toto/tata/titi/tete
Resultat => toto/tata/titi
 
En gros je veux pas le dernière chaine.
 
merci d'avance

mood
Publicité
Posté le 28-07-2003 à 18:17:42  profilanswer
 

n°470135
pospos
Posté le 28-07-2003 à 18:37:40  profilanswer
 

je ne connais pas la commande cut
 
par exemple si tu a a/b/c/d/ tu veux k'il te retourne a/b/c ou a/b/c/d ?
Et tu peu avoir autre chose que / comme separateur?

n°470147
Muchacho
Posté le 28-07-2003 à 18:52:52  profilanswer
 

vfqs a écrit :

Slt all,
 
Y'a-t-il un code perl similaire à ce qui suit:
 
cut -d/ -f-2 fichier
 
Ex: toto/tata/titi/tete
Resultat => toto/tata/titi
 
En gros je veux pas le dernière chaine.
 
merci d'avance


si je ne m'abuse, ta commande devrait plutot te renvoyer "tata" qui est le 2e champ de l'expression delimitée par des "/".
L'equivalent de cut peut se faire par un split (cette cmd transforme une chaine en tableau, tu prends ensuite le champ qui t'interesse)

n°470544
anapajari
s/travail/glanding on hfr/gs;
Posté le 29-07-2003 à 09:52:49  profilanswer
 

sinon avec un regex c'est assez vite fait:

Code :
  1. my $texte ="tata/titi/toto/tete";
  2. $texte =~ s/(.*?)\/([^\/]*)$/$1/;
  3. print "$texte\n\n";

n°470618
vfqs
Posté le 29-07-2003 à 10:33:34  profilanswer
 

Muchacho: Nono via la cmd cut j'obtiens bien le résultat que j'avance. :)
 
Anapajari: C a l'air pas mal ton bout de code. Je vais essayer de suite.  :jap:


Message édité par vfqs le 29-07-2003 à 11:03:10
n°470667
vfqs
Posté le 29-07-2003 à 11:02:50  profilanswer
 

Anapajari a écrit :

sinon avec un regex c'est assez vite fait:

Code :
  1. my $texte ="tata/titi/toto/tete";
  2. $texte =~ s/(.*?)\/([^\/]*)$/$1/;
  3. print "$texte\n\n";



Tu peux m'expliquer ce que fait la partie en bleu ?
 
s/(.*?)\/([^\/]*)$/$1/

n°470708
anapajari
s/travail/glanding on hfr/gs;
Posté le 29-07-2003 à 11:19:47  profilanswer
 

([^\/]*)$ on décompose:

Code :
  1. [^\/] -> tous les caractères qui ne sont pas des /
  2. *     -> 0 ou plusieurs fois ( en fait je pense qui vaut mieux mettre un +, pour eviter les problemes si $texte se termine par /)
  3. $     -> qui termine la chaine


Donc en fait avec ce motif je prends "tous les caractères qui ne sont pas des / et qui terminent $texte.  
Du coup /(.*?)\/([^\/]*)$/ nous donne:
tout et n'importe quoi suivi d'un / suivi de plusieurs caracteres qui ne sont pas des / et qui terminent la chaine.
 
Huumum pas sur d'avoir été très clair moi!

n°470943
vfqs
Posté le 29-07-2003 à 14:23:25  profilanswer
 

[^\/] -> tous les caractères qui ne sont pas des /  
 
En fait c'est cette partie que je pigeais po. :)
 
je pensais que "^" indiquer en debut de ligne et non une négation comme "!".
Ce sont les crochets qui influe sur ^ ?

n°470947
anapajari
s/travail/glanding on hfr/gs;
Posté le 29-07-2003 à 14:26:09  profilanswer
 

absolument!!!

n°470950
vfqs
Posté le 29-07-2003 à 14:28:30  profilanswer
 

un grand merci pour ce code. Cela m'évitera de rajouter du shell dans mon code.  :jap:  
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] cmd simmliaire à cut ??

 

Sujets relatifs
[Perl] Lecture du groupe détenteur d'un repertoire Unix[PERL] Définir des variables globales
[Perl] classer des e-mails en fonction du fournisseur[PHP ou PERL] Cherches script pour avoir les requetes de recherche
Portail en perl[PERL] Rechercher un / avec une regex
[Perl] Cgi de redirectionInstaller des modules perl
[PERL] Quitter proprement un scriptcalcul erroné en perl
Plus de sujets relatifs à : [Perl] cmd simmliaire à cut ??


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR