GNU/Linux >> Tutoriels Linux >  >> Linux

Ajout avec "sed" ?

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/| 

Entrée :

1+2100+250100-250 

Sortie :

3350-150 

Votre mission, si vous l'acceptez, est de mettre en œuvre la multiplication.


Linux
  1. Remplacez les guillemets intelligents par la commande Linux sed

  2. Utilisation de plusieurs modèles à la fois avec la commande Sed

  3. Supprimer tous les commentaires C avec Sed ?

  4. Coloriser la sortie de queue avec Sed ?

  5. sed avec une chaîne littérale - pas un fichier d'entrée

Manipuler du texte avec sed et grep

Utilisation de la commande Linux sed avec des exemples

Comment supprimer le caractère \r avec sed

Comment remplacer récursivement les caractères par sed ?

Remplir à zéro les nombres à 2 chiffres avec sed

Expression régulière avec sed