4

I'm writing a shell script with this command:

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

But I actually want to do something that includes a directory:

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

How do ignore the forward slash so that the entire line FOLDER/OLD_ITEM is read properly?

Alex Harvey
  • 13,030
  • 3
  • 50
  • 83
Eric Brotto
  • 51,631
  • 30
  • 126
  • 173

3 Answers3

28

You don't have to use / as delimiter in sed regexps. You can use whatever character you like, as long as it doesn't appear in the regexp itself:

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

or

sed -e 's|FOLDER/OLD_ITEM|NEW_ITEM|g'
JesperE
  • 61,479
  • 20
  • 135
  • 194
7

You need to escape the / as \/.

The escape (\) preceding a character tells the shell to interpret that character literally.

So use FOLDER\/OLD_ITEM

codaddict
  • 429,241
  • 80
  • 483
  • 523
0

Escape it !

sed -e 's/FOLDER\/OLD_ITEM/NEW_ITEM/g'
Loïc Février
  • 7,192
  • 8
  • 38
  • 51