sed, évaluer une commande bash lors du remplacement
2016-09-09
Je souhaitai décoder des valeurs encodées en base64 via sed.
Le paramètre final “/e” de sed permet d’évaluer l’expression remplacée.
Ici c’est la commande bash qui affiche l’attribut suivi d’un ‘:’ et de la valeur décodée.
Comme vous le constatez, l’utilisation des valeurs capturées est possible.
$ cat /tmp/example.txt
cn: John Doe @ Home
displayName:: Sm9obiBEb2UK
mail: johndoe@home.com
$ cat /tmp/example.txt | sed -re "s/([^:]+):: (.*)$/echo \\1: \$(echo \\2 | base64 -d)/e"
cn: John Doe @ Home
displayName: John Doe
mail: johndoe@home.com
Le code a été difficile à trouver, c’est pourquoi je le partage :)