Поскольку вы используете Linux, у вас будет версия sed для GNU (в которой есть опция -i
для редактирования файлов на месте):
sed -i '/deb http:\/\/ftp.us.debian.org\/debian\/wheezy main/s/$/ contrib non-free/' file.sh
В команде sed содержимое между первыми двумя //
указывает sed искать строку, содержащую это, поэтому sed '/foo/'
будет искать строки, содержащие 'foo'. Поскольку ваша строка содержит косые черты, их необходимо экранировать. s/$/ contrib non-free
указывает sed заменить конец строки (представленный знаком доллара) на «contrib non-free». Общая форма s/replace this/with this/
. Взятые вместе, это ищет строки, которые вы хотите, а затем прикрепляет ваш текст в конец.
Если вы просто хотите изменить конец каждой строки в файле:
sed -i 's/$/ contrib non-free/'
Использование стандартного текстового редактора ed немного более переносимо, но в целом вы будете чаще использовать sed для этих задач (или, предпочтительно, приличный текстовый редактор, такой как vim).
printf '%s\n' 'g/deb http:\/\/ftp.us.debian.org\/debian\/wheezy main/s/$/ contrib non-free/' w q | ed file.sh