Bonjour ,
voici mon probleme.
Je dois cutter cette variable
7845124512200904091025.pdf de façon à récupérer
la chaine 20090409
Il faut que je commence impérativement par la fin car la chaine avant 2009 ..
est variable.
Pourriez vous m'aider, je galère un peu
Merci d'avance
Forum Programmation.shell cut sur chaine en commencant par la fin
10
avr.
2009
# egrep
Posté par Alex . Évalué à 3.
egrep permet d'utiliser les expresisons rationnelles
-o ne va sortir que la partie trouvée et non toute la ligne
2009.{4} recupère la chaine à partir de 2009 et les 4 caractères qui suivent
Bien sur ça ne marchera plus en 2010
[^] # egrep
Posté par gnial29 . Évalué à 1.
Effectivement ca ne marchera pas à chaque changement d'année.
[^] # Re: egrep
Posté par guillaje (site web personnel) . Évalué à 3.
[^] # Re: egrep
Posté par sov36 . Évalué à 1.
en supposant que les fichiers soient tous des pdf
# Inverser le texte
Posté par Ellendhel (site web personnel) . Évalué à 2.
Une solution possible : utiliser un petit bout de script Sed pour inverser le texte, et lancer la commande cut par la suite.
http://sed.sourceforge.net/grabbag/scripts/revchr_1.sed
Et ré-inverser le texte après pour retomber sur tes pattes.
Tiens une nouvelle fonction sur LinuxFr ? : "1 réponse postée entre le moment où vous avez demandé le contenu et votre réponse". C'est bien ça.
[^] # Re: Inverser le texte
Posté par ✅ ffx . Évalué à 4.
[^] # Re: Inverser le texte
Posté par Ellendhel (site web personnel) . Évalué à 3.
Et du coup j'ai retrouvé l'équivalent en Sed (m'enfin bon, c'eut pu être pire et être en Perl).
# Directement en bash
Posté par dood . Évalué à 5.
echo ${st:$((${#st}-16)):8}
${#st} te donne la longueur de la chaine
$((${#st}-16)) remonte de 16 positions dans la chaine...
plus de détail là : http://tldp.org/LDP/abs/html/string-manipulation.html .
A vérifier si tu utilises un autre shell
Guilhelm
[^] # Re: Directement en bash
Posté par yolker . Évalué à 0.
STR="7845124512200904091025.pdf"
LENGTH=`echo $STR | wc -c`
echo $STR | cut -c $((-16+$LENGTH))- | cut -c 1-8
[^] # Re: Directement en bash
Posté par gnial29 . Évalué à 1.
Je te remercie , je vais m'en sortir avec ca !!!
Gracias
[^] # Re: Directement en bash
Posté par totof2000 . Évalué à 3.
[^] # Re: Directement en bash
Posté par NBaH . Évalué à 2.
st=7845124512200904091025.pdf
fonctionne aussi bien...echo ${st:${#st}-16:8}
# Ou tu peux utiliser sed
Posté par podoc . Évalué à 2.
Tu peux essayer avec sed
TAVAR=7845124512200904091025.pdf
echo $TAVAR | sed "s/^.*\(........\)....\.pdf$/\1/"
Toujours valide quelque soit l'année ...
# cut sur chaine en commencant par la fin
Posté par gnial29 . Évalué à 1.
Je vais bien avancer avec Ca !!!
# awk
Posté par jluce . Évalué à 2.
http://www.shellunix.com/awk.html
a+
je plussoie et je paie ma tournée !!!!
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.