J'essaie d'effectuer une opération mathématique avec sed
, mais il continue de traiter mes variables comme des chaînes. L'entrée est de ce type :
$ echo 12 | sed 's/[0-9]*/&+3/'$ 12+3
J'aimerais en avoir 15 en sortie. Je dois faire l'opération et remplacer son résultat mathématique en un seul passage, car j'exécute le programme en tant que démon Python, et je veux éviter des passages comme la redirection stdout
sur des fichiers, ouvrez ces fichiers, effectuez des opérations, extrayez le résultat, effectuez le remplacement. Pour moi, sed
semble le meilleur pour effectuer tout en une seule ligne.
J'ai essayé de diffuser à la fois l'entrée et la sortie de différentes manières, comme
$ echo 12 | sed 's/[0-9]*/int(&+3)/'$ echo 12 | sed 's/[0-9]*/int(&+3)/'$ echo 12 | sed 's/[0-9]*/int(&+3)/'
mais le résultat était toujours une impression du second champ.
Réponse acceptée :
Si vous voulez vraiment utiliser sed, voici la marche à suivre :
s/[0-9]/<&/gs/0//g ; s/1/|/g ; s/2/||/g ; s/3/|||/g ; s/4/||||/g ; s/5/|||||/g ; s/6/||||||/gs/7/|||||||/g ; s/8/||||||||/g ; s/9/|||||||||/g :tenss/|<||||||||||/gt tenss//gs/+//g :moins/|- |/-/gt minuss/-$// :recule/||||||||||/
Entrée :
1+2100+250100-250
Sortie :
3350-150
Votre mission, si vous l'acceptez, est de mettre en œuvre la multiplication.