Decouper chaine de caractere (sh)

Decouper chaine de caractere (sh) - Shell/Batch - Programmation

Marsh Posté le 10-07-2008 à 12:36:58    

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 z270 Gaming Pro Carbon | i7 7700K @4.8Ghz + Dark Rock Pro4 | 16Go Corsair DDR4 2400 | RTX 2080 Ti | OS SSD 840 + Jeux Raid0 SSD 850 + 2*2To Seagate | Cooler Master Cosmos 1000 + Corsair CMPSU-620HX
Reply

Marsh Posté le 10-07-2008 à 12:36:58   

Reply

Marsh Posté le 10-07-2008 à 13:12:11    

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

Reply

Marsh Posté le 10-07-2008 à 14:51:54    

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 z270 Gaming Pro Carbon | i7 7700K @4.8Ghz + Dark Rock Pro4 | 16Go Corsair DDR4 2400 | RTX 2080 Ti | OS SSD 840 + Jeux Raid0 SSD 850 + 2*2To Seagate | Cooler Master Cosmos 1000 + Corsair CMPSU-620HX
Reply

Marsh Posté le 10-07-2008 à 15:22:31    

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

Reply

Marsh Posté le 10-07-2008 à 15:46:03    

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 ?

Reply

Marsh Posté le 10-07-2008 à 16:57:33    

Du caractère 7 jusqu'au 10.

Reply

Marsh Posté le 10-07-2008 à 17:41:57    

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


Mais cut est la meilleur solution.

Reply

Marsh Posté le 10-07-2008 à 21:58:44    

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.
Reply

Marsh Posté le 12-07-2008 à 11:01:44    

Il y a aussi la solution expr :

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


 
Jean-Pierre.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed