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

 


Dernière réponse
Sujet : [SCRIPT UNIX] comment faire un substring?
jupiler toutafait

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
jupiler toutafait
Rawhead rex D'un autre cote ca serait sympa que fdl nous dise ce qu'il en est.
Parceque la, on s'est serieusement demenes dans la discussion avec argument a l'appui...
En tout cas il devrait y trouver son compte :)
jupiler d'accord, mais ce n'est pas ce qu'il recherche à mon avis
 
Quand il a dit "Rechercher le chiffre", c'est que probablement il a des champs formatés de la sorte et il veut lire les caractères du milieu
 
 
Enfin, je me comprends :p
Rawhead rex Tiens je viens de penser a un truc si tu ne comprends pas ce que je voulais dire : essaye d'appliquer ton 'cut' a :
 
ADSA001DAS
AWE002ERTY
 
Ben pb !
Rawhead rex Bon effectivement je me souviennait plus exactement ce que fait un sub-string en Java(plus touchait depuis un bout de temps).
Mais il n'empeche qu'il n'a pas demande comment refaire exactement un sub-string mais il l'a pris comme exemple !
'En gros, faire comme un substring en Java'
 
Donc ca ne remet pas en cause mon explication, en plus je ne suis pas contre ton 'cut' je dis juste que son domaine d'application est limite(comme tout bon cut qui se respecte d'ailleurs :)).
 
Sinon le mieux ca serait que fdl nous reponde plutot qu'on continue cette bataille dialectique :)
jupiler je ne comprends pas du tout ce que tu veux dire.
 
Mais ce qu'il dit lui est clair:
 
 

Citation :


UP!
 
svp, par exemple, A102B -> 102 (entre lé 2ème et 4ème caractère)
 
En gros, faire comme un substring en Java  


 
le substring java, c'est entre position de départ et position d'arrivée. le "cut -c2-4" prend bien entre le 2ème et le 4ème caractère, c'est exactement ce qu'il veut non ?

Rawhead rex Non c'est pas exactement ce qu'il a decrit, il a dit qu'il voulait recuperer un champ de caractere(ici des chiffres) dans une chaine generale.
Pour reprendre l'exemple "A002B" et pour clarifier : il n'a pas preciser que les chaines commencent toutes par 'A' et finissent par 'B', ni meme qu'elles commencent par un seul caractere et finissent par un seul caractere.
 
Donc tu n'as pas d'invariant significatif a passer au 'cut'.
tu dois donc te contenter de recuperer des sous-chaines de chiffres situees entre 2 chaines de caracteres quelconques de longueur variables, d'ou l'utilisation de 'awk'
jupiler je vois pas le pb.
 
Il cherche à récupérer une sous-chaine entre 2 positions.
 
C'est exactement ce que fait la commande que j'ai écrite, quelque soit la chaine
Rawhead rex Ouais mais seulement si les positions des colonnes sont toujours les memes!
Si les longueurs de champs sont variables tu peut plus, a moins d'utiliser un separateur, mais pour cela il faut que ce soit toujours le meme(par exemple le caractere 'A').
Bref dans tous les cas il faut un invariant pour 'cut'.
 
Sinon tu cree un shell script complique avec des boucles 'cut', du coup autant utiliser des utilitaires deja fourni du genre 'awk'
jupiler pour faire un découpage entre 2 positions, je ne vois pas ce qu'il peut y avoir de meilleur que le cut:
 
cut -c2-6 "abcdefghij" donne bcdef
 
ya pas plus simple
Rawhead rex Le mieux c'est d'utiliser un petit utilitaire, ca simplifie la vie.
Pour ma part je prefere awk, donc la commande suivante devrait te satisfaire :
 
echo $"nom_variable" | awk -F[a-x] '{print $2}'
 
Tu pourrais faire un "cut -d ... -f ..." mais seulement si ta chaine de caractere commence toujours par un 'A' et finie par un 'B' sinon ca devient aussi simplie d'utiliser awk.
jupiler "man cut"
fdl UP!
 
svp, par exemple, A102B -> 102 (entre lé 2ème et 4ème caractère)
 
En gros, faire comme un substring en Java
fdl voila, je voudrais recuperer un champ de caractere dans une variable en script shell.
Par exemple: recuperer le chiffre dans "A002B"
 
Merci d'avance

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)