#1 Le 17/07/2016, à 13:16
- Swiss_Knight
Faire un calcul "dans" une expression sed -r sur un fichier
Hello,
Je m'arrache les cheveux à essayer de faire un calcul dans une commande sed :
J'ai un fichier avec des lignes comme ceci :
xx_yy:Poids z:t
où xx, yy, z et t varient (ce sont toujours des chiffres).
J'aimerais assez bêtement remplacer z:t par sa valeur décimale (mettons 4 digits après la virgule).
Pour l'instant je suis là :
sed -i -r 's/^([0-9]{2}_[0-9]{2}):Poids (.*):(.*)$/\1:Poids `bc | \2:\3`/g' "${FILE}";
Mais ça ne fonctionne pas bien entendu... :S
Accessoirement j'aimerais pouvoir remplacer xx par xx/10 et yy par yy/10 (en conservant toujours l'underscore entre les deux)
Merci infiniment !
Dernière modification par Swiss_Knight (Le 17/07/2016, à 13:21)
xuniL
Hors ligne
#2 Le 17/07/2016, à 13:54
- pingouinux
Re : Faire un calcul "dans" une expression sed -r sur un fichier
Rebonjour,
Un petit exemple pourrait être utile…
Hors ligne
#3 Le 17/07/2016, à 14:04
- credenhill
Re : Faire un calcul "dans" une expression sed -r sur un fichier
hello
bc ne sera pas exécuté entre des ' il faut des "
$ echo '$(bc <<<"2+2" ) '
$(bc <<<"2+2" )
$ echo "$(bc <<<"2+2" ) "
4
Hors ligne
#4 Le 17/07/2016, à 14:14
- Compte anonymisé
Re : Faire un calcul "dans" une expression sed -r sur un fichier
Pour la demande accessoire :
$ sed -r 's/.*([0-9][0-9])_([0-9][0-9])/\1\/10_\2\/10/' <<< "11_22:Poids 3:4"
11/10_22/10:Poids 3:4
La demande principale me parait compliqué avec sed
#5 Le 17/07/2016, à 14:24
- pingouinux
Re : Faire un calcul "dans" une expression sed -r sur un fichier
Si z et t sont des entiers :
$ sed -r 's#^([0-9]{2})_([0-9]{2}):Poids (.*):(.*)$#\1/10_\2/10:Poids \3.0000:\4.0000#' <<<"12_34:Poids 5:7"
12/10_34/10:Poids 5.0000:7.0000
Hors ligne
#6 Le 17/07/2016, à 14:31
- credenhill
Re : Faire un calcul "dans" une expression sed -r sur un fichier
faire des calculs dans sed
$ sed -r 's/([0-9]) ([0-9])/echo "\2+\1" | bc/e' <<<"9 7"
16
Hors ligne