Échapper l'apostrophe
Suivantes fonctionne comme prévu. Je veux remplacer le mot "moi" avec \'
echo "test ' this" | sed 's/'"'"'/me/g'
test me this
Résultat attendu:
test \' this
Est-il possible d'échapper les guillemets dans la même commande?
Vous devez vous connecter pour publier un commentaire.
Votre question est un peu déroutant car il n'y a pas de
me
dans la chaîne d'origine pour le remplacer. Cependant, je crois que je l'ai. Permettez-moi de paraphraser:Si c'est le cas (vous voulez juste pour s'échapper les guillemets simples), vous pouvez utiliser:
En utilisant des guillemets autour de la
sed
de commande, vous devez supprimer le besoin de s'inquiéter à propos incorporé des guillemets simples. Vous ne alors s'inquiéter au sujet d'échapper depuis le shell va absorber un niveau d'évasions, de sorte quesed
verrez:qui va le transformer en
'
en\'
comme souhaité.Si vous voulez un moyen d'échapper à la fois unique et entre guillemets doubles avec un seul
sed
, il est probablement plus facile de fournir de multiples commandes poursed
de sorte que vous pouvez utiliser l'autre citations:Si j'ai mal compris vos besoins, quelques exemples pourraient aider.
[dod@MBP-13~] echo "test me this" | sed "s/me/\\\'/"
test \' this
me
, ils veulent maintenant faire pour obtenir\'
(et pour les guillemets doubles ainsi). Mis à jour (je l'espère) la réponse à cette question.sed
, la meilleure chose à faire est de simplementsed -f mysedfile.sed
, et d'éviter le double ou le triple d'échappement des jeu entièrement. Cela ouvre également la possibilité de syntaxe en surbrillance dans votre éditeur de texte de son choix.J'ai quelques doutes à propos de votre question, mais de toute façon, peut-être que ma solution est utile pour toute personne.
Laissez-moi dire avant tout :
\\ c'est-à-dire un \ parce que quand vous mettez les deux ensemble, vous êtes l'annulation de son sens comme caractère de remplacement. Et \x27 comme guillemet simple, au moins pour moi, c'est plus facile que de travailler avec un double ...
Enfin j'ai mis
alors là, vous avez test m' ==> test \' ce
et ici est le contraire.
Est-ce que tu veux dire?:
Ou ceci:
Je trouve qu'il vaut mieux toujours apostrophe sed/awk/perl... commandes sur la ligne de commande et de créer des "trous" pour les guillemets doubles paramètres utilisés.
J'avais besoin de l'utiliser dans un script pour créer un fichier de configuration de dnsmasq, c'est la technique que j'ai utilisé:
exemple de sortie