Comment remplacer les crochets appariés avec d'autres syntaxe avec sed?

Je veux remplacer toutes les paires de crochets dans un fichier, par exemple, [some text]avec \macro{some text}par exemple:

This is some [text].
This [line] has [some more] text.

Cela devient:

This is some \macro{text}.
This \macro{line} has \macro{some more} text.
  • Les paires seulement se produire sur des lignes individuelles, jamais sur plusieurs lignes.
  • Parfois, il peut y avoir plus d'une paire sur une seule ligne, mais ils ne sont jamais imbriqués.
  • Si un support est retrouvé seul sur une ligne, sans une paire, alors il ne devrait pas être changé.

Comment puis-je remplacer ces paires de crochets avec ce code?

source d'informationauteur Village