Как удалить одну строку из репозитория с sed

Мой /etc/apt/sources.list содержит эту строку:

deb http://downloads.sourceforge.net/project/xenlism-wildfire/repo deb/ 

Я хочу удалить ту строку через sed в командной строке, таким образом, я попробовал этот код, но ошибку возвратов!

$ sudo sed 's:deb http://downloads.sourceforge.net/project/xenlism-wildfire/repo deb/::g' /etc/apt/sources.list
sed: -e expression #1, char 75: unknown option to `s'

Я предполагаю символ : после http вызванный эта ошибка, но как я могу зафиксировать его?

6
задан 8 January 2017 в 16:52

2 ответа

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

sudo sed 's#deb http://downloads.sourceforge.net/project/xenlism-wildfire/repo deb/##g' /etc/apt/sources.list

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

*I уверен, что существуют исключения, особенно при использовании более старых версий sed, но я не знаю ни о каких ограничениях от руки.

9
ответ дан 23 November 2019 в 07:20

Выполненный как это:

sudo sed -i '\%^deb http://downloads.sourceforge.net/project/xenlism-wildfire/repo deb%d' /etc/apt/sources.list

Проблемы я зафиксировал:

  • Использовать -i флаг для изменения оперативного файла. Без этого команда просто распечатала бы вывод sed на экран, не обновляя файл.
  • Вместо использования s/// для замены строки пустой строкой я использовал d команда для удаления строки.
  • Для сопоставления с образцом, вместо /.../, Я использовал \%...%, потому что % не появляется в шаблоне. С /, все случаи / должен был бы быть заменен.

Обратите внимание, что возможно более простой фильтр мог бы быть достаточно хорошим. Например, если Вы знаете это xenlist-wildfire уникально в файле, затем эта более простая команда будет работать также:

sudo sed -i '/xenlism-wildfire/d' /etc/apt/sources.list

С тех пор в этом примере существует нет /, Я мог использовать более простое /.../ фильтр.

(Спасибо за @steeldriver для идей улучшения.)

6
ответ дан 23 November 2019 в 07:20

Другие вопросы по тегам:

Похожие вопросы: