Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile !

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