Escape < et > dans sed / shell
Question
Comment puis-je m'échapper '<' et '>' personnage en sed.
J'ai des fichiers XML qui nécessitent du texte entre les balises à remplacer. Comment puis-je échapper au '>' et '<' caractères.
Le problème avec > et < est-ce que cela a une signification spéciale dans le shell pour rediriger la sortie vers un fichier. Donc, la barre oblique inverse ne fonctionne pas.
La solution
Ok. Découvert par moi-même. Utilisez des guillemets.
$ sed -i "s/>foo</>bar</g" file
Autres conseils
Il suffit de mettre une barre oblique inverse devant eux ou de les mettre entre guillemets simples ou doubles. À la réflexion, votre question doit, à mon avis, être plus claire. Essayez-vous d'utiliser sed pour traiter un fichier XML et souhaitez-vous séparer un tag? Alors vous voulez:
sed -re 's@(<TAG.*?>).*?(</TAG>)@\1hi\2@' test.xml
Échappez-les avec une barre oblique inverse