Использование разных разделителей в командах sed и адресах диапазонов

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

  • / foo / bar

на:

  • / baz / qux

Однако в команде sed s /// используется косая черта / как ограничитель. Если я это сделаю, я увижу сообщение об ошибке, например:

▶ sed 's//foo/bar//baz/qux//' FILE
sed: 1: "s//foo/bar//baz/qux//": bad flag in substitute command: 'b'

Точно так же иногда я хочу выбрать диапазоны строк, например линии между шаблоном foo / bar и baz / qux . Опять же, я не могу этого сделать:

▶ sed '/foo/bar/,/baz/qux/d' FILE
sed: 1: "/foo/bar/,/baz/qux/d": undefined label 'ar/,/baz/qux/d'

Что я могу сделать?

33
задан Alex Harvey 6 May 2019 в 08:46
поделиться