...
Ensuite, on ouvre { pour commencer une séquence de commandes sed. La première, N permet d'accumuler la ligne suivant celle qui vient de correspondre au premier motif. On a donc maintenant la ligne if plus celle then dans le même buffer où seront faites la substitution suivante. La seule chose, c'est qu'il faut penser que cette substitution se fait sur une chaîne avec 2 lignes, donc séparée par un passage à la ligne. Au final, on referme } pour terminer les séquences.
Autre essai
Code Block | ||
---|---|---|
| ||
# transformation d'une structure de déclaration d'utilisateurs du type :
# user:
# sshkeys:
# sshkey_nom_numero:
# key: '<clé ssh>'
#
# en
# user:
# sshkeys:
# - 'ssh-rsa <clé ssh> ssh_nom_numero'
sed -i.bak '/^[[:space:]]*sshkeys:[[:space:]]*$/{N;N;s/^[[:space:]]*sshkeys:\n[[:space:]]*sshkey_\([^_][^_]*_[0-9]*\):\n[[:space:]]*key: .\([^[:space:]]*\).$/ sshkeys:\n - '"'"'ssh-rsa \2 sshkey_\1'"'"'/}' users.yaml |