2010-10-12 4 views
3

J'écris un script shell avec cette commande:Ignorer la barre oblique dans un script shell

sed -e 's/OLD_ITEM/NEW_ITEM/g' 

Mais je veux vraiment faire quelque chose qui comprend un répertoire:

sed -e 's/FOLDER/OLD_ITEM/NEW_ITEM/g' 

Comment faire ignorer la barre oblique afin que toute la ligne FOLDER/OLD_ITEM soit lue correctement?

+0

double possible [utilisez des barres obliques en remplacement sed] (http: // stackoverflow.com/questions/5864146/use-slashes-in-sed-replace) – tripleee

Répondre

5

Vous devez échapper le / en tant que \/.

L'échappement (\) précédant un caractère indique au shell d'interpréter ce caractère littéralement.

Il faut donc utiliser FOLDER\/OLD_ITEM

0

il échapper!

sed -e 's/FOLDER\/OLD_ITEM/NEW_ITEM/g' 
19

Vous ne devez pas utiliser / comme séparateur dans sed regexps. Vous pouvez utiliser tout caractère que vous aimez, aussi longtemps qu'il ne semble pas dans l'expression rationnelle lui-même:

sed -e '[email protected]/[email protected][email protected]' 

ou

sed -e 's|FOLDER/OLD_ITEM|NEW_ITEM|g' 
Questions connexes