Bonjour à toutes et à tous.
Je cherche comment-faire pour calculer avant de remplacer un nombre avec la commande sed
.
Par exemple :
Ici j’ai parsé une date par AAAA MM DD et un nombre que je souhaiterais additionner - ce serait le retour \\4
echo 2021092301 | sed -Er 's/^([0-9]{0,4})([0-9]{0,2})([0-9]{0,2})(.*)/'`date +%Y`:\\2:\\3\ \\4'/'
2022:09:23 01
Le retour « normal » pour l’exemple
echo 2021092301 | sed -Er 's/^([0-9]{0,4})([0-9]{0,2})([0-9]{0,2})(.*)/'`date +%Y`\\2\\3`vs=\\4;echo $((vs+1))`'/'
202209235
Prend 4 et ajoute 1
echo 2021092301 | sed -Er 's/^([0-9]{0,4})([0-9]{0,2})([0-9]{0,2})(.*)/'`date +%Y`\\2\\3`vs=$4;echo $((vs+1))`'/'
202209231
Ne trouve pas $4
écrit 1
echo 2021092301 | sed -Er 's/^([0-9]{0,4})([0-9]{0,2})([0-9]{0,2})(.*)/'`date +%Y`:\\2:\\3\ $'\\4+1''/'
2022:09:23 01+1
Trouve $'\\4'
mais n’additionne pas
J’ai trouvé cet exemple mais ici c’est toute la chaine :
echo 2021092301 | sed -E 's/^(.*)/echo \$(( & + 3 ))/e'
2021092304
Ce n’est pas cela que je souhaite faire.
Qui pourrait me dire comment-faire ?
Merci à vous.
C’est pour faire un truc du genre mais pas pareil
$ZONE='domain.tld'
$ZONEFILE ='/etc/bind/masters/domain.tld.host'
SERIAL=`/usr/sbin/named-checkzone $ZONE $ZONEFILE | egrep -ho '[0-9]{10}'`
sed (-i) 's/'$SERIAL'/'$(($SERIAL+1))'/' $ZONEFILE
sed -i
remplace dans le fichier ATTENTION Supprimer le -i
pour voir la sortie sans modifier le fichier.
Salutations,
Romain