Как удалить любую строку из файла с помощью сценариев оболочки?

9

Я пытаюсь удалить строку из .bash_profile. Строка добавляется при запуске моего сценария оболочки:

Моя строка в bash_profile выглядит следующим образом:

# for Myapllication
export MYAPP_HOME=/opt/myapp

Я хочу удалить строки, .bash_profileкогда myapp удаляется через rpm.

Как удалить любую строку из файла с помощью сценария оболочки? (или возможный альтернативный метод)

Gyhot
источник

Ответы:

11

Вы можете удалить строку из текстового файла с помощью sed (существуют другие инструменты).

Например:

sed -i -e '/myapp/d' .bash_profile

удаляет из .bash_profile каждой строки, содержащей строку myapp.

lgeorget
источник
10

Файл, как ~/.bash_profileживет в домашнем каталоге пользователя. Такой файл полностью находится под контролем пользователя. Глобальные действующие команды вроде rpmне должны изменять такие файлы.

  • Обычно у вас есть базовый файл конфигурации, который поставляется пакетом rpm.

  • Затем у вас есть глобальный файл конфигурации, который может использоваться пользователем root для перезаписи некоторых настроек, специфичных для данной системы.

  • Затем у вас есть личные файлы конфигурации в вашем домашнем каталоге, которые вы можете использовать, чтобы переопределить глобальные настройки с вашими личными предпочтениями.

Команда like rpmдолжна только изменять первый и никогда не изменять последний.

Михась
источник
Можете ли вы предложить URL для изучения по этой теме?
Gyhot
1
@Gyhot unix.stackexchange.com/questions/77518/… хороший. Если в вашем целевом дистрибутиве есть /etc/profile.dкаталог, поместите туда файл, содержащий эту exportстроку. В противном случае вы можете редактировать /etc/profile, но будьте очень осторожны, чтобы не нарушить настройки системного администратора.
Жиль "ТАК - перестань быть злым"
3
sed -i '/^export MYAPP_HOME=\/opt\/myapp$/d' ~/.bash_profile
Хауке Лагинг
источник
0

Попробуйте vim-way:

ex -s +"g/MYAPP_HOME/d" -cwq file.txt
kenorb
источник