Question

Comment faire correspondre une citation unique dans sed si l'expression est entre guillemets simples:

sed -e '...'

Par exemple, vous devez faire correspondre ce texte:

'foo'
Était-ce utile?

La solution

Vous pouvez soit utiliser:

"texta'textb" (APOSTROPHE inside QUOTATION MARKs)

ou

'texta'\''textb' (APOSTROPHE text APOSTROPHE, then REVERSE SOLIDUS, APOSTROPHE, then APOSTROPHE more text APOSTROPHE)

J'ai utilisé des noms de caractères unicode. REVERSE SOLIDUS est plus communément appelé barre oblique inversée.

Dans ce dernier cas, vous fermez votre apostrophe, puis citez-la avec une barre oblique inverse, puis ouvrez une autre apostrophe pour le reste du texte.

Autres conseils

Comme indiqué dans les commentaires sur la question, il ne s'agit pas vraiment de sed, mais comment inclure une citation dans une chaîne citée dans un shell (par exemple, bash).

Pour clarifier une réponse précédente, vous devez échapper la citation par une barre oblique inverse, mais vous ne pouvez pas le faire dans une expression entre guillemets. À partir de la page de manuel de bash:

  

Caractères entre guillemets simples   préserve la valeur littérale de chaque   caractère dans les citations. Un célibataire ou Individual   devis ne peut pas se produire entre célibataire   citations, même lorsqu'elles sont précédées d'un   barre oblique inverse.

Par conséquent, vous devez mettre fin à l'expression citée, insérer le guillemet échappé et commencer une nouvelle expression citée. La suppression des guillemets du shell n’ajoute pas d’espace supplémentaire. Vous obtenez donc une concaténation de chaînes.

Donc, pour répondre à la question initiale de savoir comment citer simplement l'expression "foo", vous feriez quelque chose comme ceci:

sed -e '...'\''foo'\''...'

(où '...' est le reste de l'expression sed).

Globalement, pour des raisons de lisibilité, il serait préférable de remplacer les guillemets environnants par des guillemets doubles si possible:

sed -e "...'foo'..."

[Pour illustrer le cauchemar potentiel lié à la maintenance de la première approche (guillemets simples), notez comment la syntaxe de StackOverflow mettant en surbrillance les guillemets, les barres obliques inverses et tout autre texte est définitivement incorrecte.]

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top