My /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 вызвал эту ошибку, но как я могу ее исправить?
Выполните следующие действия:
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
Так как в этом примере нет /, я мог бы использовать более простой [ f14].
(Спасибо за @steeldriver за идеи улучшения.)