#1 Le 06/12/2015, à 11:24
- ar barzh paour
[Résolu] manipulation chaine de caractère
hello bonjour à tous
je ne comprends pas ce qui ne va pas dans le code suivant
#!/bin/bash
for f in XXXXXXXIMG_20150817_124906YYYYYYYYYY.jpg # (ici en réel je mets *.jpg)
do
deb=${f%%IMG-????????_??????*} #prendre le 1er champ
fin=${f##*IMG-????????_??????} #prendre le dernier champ
spc=${f#*IMG-????????_??????} #sans premier champ
dc=${f##*IMG-????????_??????} #dernier champ
ssdc=${f%IMG-????????_??????*} #sans dernier champ
pc=${f%%IMG-????????_??????*} #premier champ
if [[ $f =~ IMG-????????_?????? ]]
then
((nb++))
echo $nb "délimitateur trouvé OOOOOOOOOOOOOOOOOOOOOO"
echo "NOM " $f
echo "DEB " ${deb}
echo "FIN " ${fin}
echo "spc " $spc
echo "dc " $dc
echo "ssdc" $ssdc
echo "pc " $pc
else
echo
((nb++))
echo $nb NON OK
echo "NOM "$f
echo "DEB "${deb}
echo "FIN "${fin}
fi
done
exit 0
le résultat
résultat
NOM XXXXXXXIMG_20150817_124906YYYYYYYYY.jpg
DEB XXXXXXXIMG_20150817_124906YYYYYYYYY.jpg
FIN XXXXXXXIMG_20150817_124906YYYYYYYYY.jpg
spc XXXXXXXIMG_20150817_124906YYYYYYYYY.jpg
dc XXXXXXXIMG_20150817_124906YYYYYYYYY.jpg
ssdc XXXXXXXIMG_20150817_124906YYYYYYYYY.jpg
pc XXXXXXXIMG_20150817_124906YYYYYYYYY.jpg
indique que le "modèle a bien été trouvé"
mais je m'attendais à trouver
DEB XXXXXXX
FIN YYYYYYYYYY.jpg
j'ai ajouté les autres calculs spc,dc ssdc pc qui ne me serviront pas pour info
Dernière modification par ar barzh paour (Le 06/12/2015, à 11:56)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#2 Le 06/12/2015, à 11:39
- pingouinux
Re : [Résolu] manipulation chaine de caractère
Bonjour,
Petite erreur d'étourderie…
for f in XXXXXXXIMG_20150817_124906YYYYYYYYYY.jpg # (ici en réel je mets *.jpg)
deb=${f%%IMG-????????_??????*} #prendre le 1er champ
Hors ligne
#3 Le 06/12/2015, à 11:55
- ar barzh paour
Re : [Résolu] manipulation chaine de caractère
@ pingouinux merci oeil perçant ça marche mieux comme ça il ne faut jamais mélanger torchons et serviettes
dans mon premier script j'avais essayé avec model=IMG-????????_?????? sans succès , c'était peut-être la même erreur , je revérifierai mais plus tard ...
Dernière modification par ar barzh paour (Le 06/12/2015, à 11:56)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#4 Le 08/12/2015, à 14:15
- ar barzh paour
Re : [Résolu] manipulation chaine de caractère
fonctionne très bien avec un modèle
#!/bin/bash
# BUT :
# Transformer le nom d'un fichier xxxxIMG_20150817_124906yyyyy.jpg
# en un fichier de nom 2015-08-17:12-19-06-xxxx-yyyyy.jpg
modele="IMG_????????_??????"
for f in *.jpg # on ne s'occupe que des .jpg
do
deb=${f%%$modele*} #prendre le 1er champ
fin=${f##*$modele} #prendre le dernier champ
if [[ $f =~ $modele ]]
then
echo
((nb++))
echo $nb "délimitateur trouvé OOOOOOOOOOOOOOOOOOOOOO"
echo "NOM " $f # xxxxIMG_20150817_124906yyyyy.jpg
echo "DEB " ${deb} # xxxx
etc
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne