Как избежать косой черты в команде sed - PullRequest
4 голосов
/ 12 октября 2010

Я пишу сценарий оболочки с этой командой:

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

Но я действительно хочу сделать что-то, что включает в себя каталог:

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

Как игнорировать косую черту, чтобы вся строка FOLDER / OLD_ITEM читалась правильно?

Ответы [ 3 ]

20 голосов
/ 12 октября 2010

Вам не нужно использовать / в качестве разделителя в sed регулярных выражениях. Вы можете использовать любой символ, который вам нравится, если он не указан в самом регулярном выражении:

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

или

sed -e 's|FOLDER/OLD_ITEM|NEW_ITEM|g'
5 голосов
/ 12 октября 2010

Вам нужно экранировать / как \/.

Экранирование (\), предшествующее символу, говорит оболочке интерпретировать этот символ буквально.

Так что используйте FOLDER\/OLD_ITEM

0 голосов
/ 12 октября 2010

Escape it!

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