Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

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

Bloc de code
languagebash
# 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


Références