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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Decouper chaine de caractere (sh)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Decouper chaine de caractere (sh)

n°1757825
Tonio94
Posté le 10-07-2008 à 12:36:58  profilanswer
 

Bonjour,
 
 
Je ne trouve pas comment faire une chose toute simple, découper une chaine de caractère.
 
var=toto1296file.txt
 
Il faudrait que je récupère le "1296" seulement, mais cut ne coupe que des fichiers et non des chaines de caractère.
 
J'imagine en utilisant "sed" mais je ne sais pas m'en servir.
 
C'est en ksh.
 
 
Merci d'avance.


---------------
~ Msi z790 Gaming Plus Wifi | i9-12900K + Dark Rock Pro4 | 64Go G-Skill DDR4 4800 | RTX 3080 Ti
mood
Publicité
Posté le 10-07-2008 à 12:36:58  profilanswer
 

n°1757844
matafan
Posté le 10-07-2008 à 13:12:11  profilanswer
 

tr -Cd '[[:digit:]]'

n°1757916
Tonio94
Posté le 10-07-2008 à 14:51:54  profilanswer
 

matafan a écrit :

tr -Cd '[[:digit:]]'



 
 
Je ne pense pas car ma variable peut s'appeler différemment, exemple : toto1296file1224rep.txt
 
En fait c'est la position qui ne change pas, je récupère toujours le 1296.
 
Et je travaille dans un script avec une variable et non en ligne de commande avec un fichier.


---------------
~ Msi z790 Gaming Plus Wifi | i9-12900K + Dark Rock Pro4 | 64Go G-Skill DDR4 4800 | RTX 3080 Ti
n°1757933
Tonio94
Posté le 10-07-2008 à 15:22:31  profilanswer
 

Bon tout bêtement j'ai trouvé en utilisant cut :
 
 
var="totflt1296file.txt"
var2=`echo $var | cut -c7-10`
 
 
Mais bon j'aurais aimé le faire avec sed ou awk, si quelqu'un maitrise je suis preneur :)
 
Merci

n°1757950
matafan
Posté le 10-07-2008 à 15:46:03  profilanswer
 

Ben faudrait spécifier un peu plus précisément le problème aussi. C'est vraiment ce qui est entre les caractères 7 et 10 que tu veux récupérer ? Ou bien les chiffres qui suivent "toto" ? Ou bien le premier groupe de chiffres ?

n°1758018
Tonio94
Posté le 10-07-2008 à 16:57:33  profilanswer
 

Du caractère 7 jusqu'au 10.

n°1758051
matafan
Posté le 10-07-2008 à 17:41:57  profilanswer
 

awk '{print substr($0, 5, 4)}'


Mais cut est la meilleur solution.

n°1758166
Sve@r
Posté le 10-07-2008 à 21:58:44  profilanswer
 

Tonio94 a écrit :

Bon tout bêtement j'ai trouvé en utilisant cut :
 
 
var="totflt1296file.txt"
var2=`echo $var | cut -c7-10`
 
 
Mais bon j'aurais aimé le faire avec sed ou awk, si quelqu'un maitrise je suis preneur :)
 
Merci


La soluce avec awk a été donnée
Voici avec sed

Code :
  1. var2=`echo $var | sed -e "s/^.\{6\}\(....\).\{1,\}/\1/g"`


Plutôt imbitable non ? Reste avec cut c'est plus simple.


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1758751
aigles
Posté le 12-07-2008 à 11:01:44  profilanswer
 

Il y a aussi la solution expr :

$ var="totflt1296file.txt"
$ var2=$(expr substr "$var" 7 4)
$ echo $var2
1296
$


 
Jean-Pierre.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Decouper chaine de caractere (sh)

 

Sujets relatifs
Contenu d'une chaîne de caractères[PHP] chaine de caractères dans BDD
Recherche de caractère dans un nom de fichiertri sur une chaine de caractère dans excel
pbm apostrophe caractère spécial[RESOLU] extraire et afficher premier caractere de chaque chaine
Modification d'une chaine du registre uniquement en batchconversion une chaîne en majuscule ds VB6.0
Decouper une chaine en un tableau a chaque caractère 
Plus de sujets relatifs à : Decouper chaine de caractere (sh)


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