Problème: J'ai une variable avec des personnages que je voudrais préfixer un autre caractère à l'intérieur de la même chaîne stockée dans uneRechercher et remplacer les caractères spécifiques dans une variable avec sed
variablesEx. "[Blahblahblah]" ---> "\ [blahblahblah \]"
Solution actuelle: Actuellement, j'accomplir ce que je veux avec deux étapes, chaque étape attaquer un support
Ex.
temp=[blahblahblah]
firstEscaped=$(echo $temp | sed s#'\['#'\\['#g)
fullyEscaped=$(echo $firstEscaped | sed s#'\]'#'\\]'#g)
Cela me donne le résultat que je veux, mais je sens que je peux accomplir cela en une ligne en utilisant capturing groups. Je n'ai tout simplement pas eu de chance et je me brûle. La plupart des exemples que je rencontre impliquent de vouloir extraire le texte entre crochets au lieu de ce que j'essaie de faire. This est ma dernière tentative en vain. Des idées?
Vous devez guillemet 'temp' $ pour empêcher la séparation de mots et de l'expansion générique. Notez que '[]' est un caractère générique de shell, il peut donc se développer de façon inattendue. –
Oui, vous avez raison. Ceci est copié de l'OP, et va le modifier. – CWLiu
Je viens aussi de remarquer que l'expression régulière que vous utilisez est au format étendu (en utilisant '|' pour séparer les alternatives). Cela ne fonctionnera généralement pas, sauf si vous utilisez 'sed -r' (GNU sed) ou' sed -E' (BSD sed). Il serait probablement préférable d'utiliser une expression entre parenthèses (bien qu'une expression entre parenthèses contenant des crochets soit ... difficile). 'sed 's/[] []/\\ &/g'' devrait fonctionner. –