Bash-скрипт для комментирования и раскомментирования строки

Сначала добавьте тестовую ветку в/etc/apt/sources.list:

deb http://security.debian.org/ testing/updates main
deb http://ftp.us.debian.org/debian testing-updates main
deb http://ftp.us.debian.org/debian testing main

Затем проведите тестирование контактов в /etc/apt/preferences, чтобы пакеты не загружались автоматически.

Package: *
Pin: release a=testing
Pin-Priority: -2

Теперь, если вы хотите получить пакет из тестирования, укажите целевой выпуск вручную.Будьте осторожны, чтобы не допустить обновления половины вашей системы.

# apt-get install -t testing...
0
02.04.2020, 19:31
1 ответ

Вам необходимо включить целевую страну в поисковый запрос ITALY, сгруппировать альтернативы (Autumn|Delta....)и разрешить символы между .*двумя поисковыми запросами

sed -E '/ITALY.*(Autumn|Delta.. M|Red.._Park|Ferari-taxi)/s/^/#/' file1

Это с небольшим читерством \, чтобы избежать побегов

sed -E '/ITALY.*(Autumn|Delta\\\\ M|Red\\\\_Park|Ferari-taxi)/s/^/#/' file1

Внесите изменения в тот же файл, включив флаг на месте -iдляsed

sed -i -E.....

Изменить Вы могли бы опубликовать это как еще один вопрос, но...

"...можно ли найти слова с \\без ввода \\\\в sed ?..." другими словами без экранирования их.

Нет. А причина здесь:

Символ ‘\’, за которым следуют некоторые обычные символы, приобретает особое значение

Итак, в вашей строке соответствия, если символ после \является символом, который образует одну из зарезервированных пар (, например, \+, \?, \n), как sedузнать, если вы ищете буквальное \nили новую строку?

Таким образом, каждый \, который предназначен для буквального чтения, должен быть экранирован, чтобы sedоднозначно знал, что он не является частью какой-либо зарезервированной последовательности символов.

2
28.04.2021, 23:18

Теги

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