lamo4ok
@lamo4ok
Программист

Как отредактировать .env файл наиболее нативно?

Есть файл .env, в нем хранятся некие значения в привычном для этого файла формате:

ENV_VAR_1=123
ENV_VAR_2=456
ENV_VAR_3=789

Нужно как можно более нативно для linux, то есть по возможности с помощью неких команд, за это отвечающих, изменить значение одной из переменных. Чтобы мы в итоге получили вот такой вот файл:

ENV_VAR_1=321 # изменено
ENV_VAR_2=456
ENV_VAR_3=789

Нужно учесть, что переменные могут быть обрамлены сверху, снизу или справа комментариями, что их может вообще не быть в файле (тогда стоит дописать переменную в его конец), ну и так далее.
  • Вопрос задан
  • 123 просмотра
Пригласить эксперта
Ответы на вопрос 5
martin74ua
@martin74ua Куратор тега Linux
Linux administrator
ansible
в конкретном случае - модуль lineinfile
Ответ написан
@Nujabes37
:DEATH
а если значение переменной неизвестно?

cat .env | sed 's/\(ENV_VAR_1=\)\([0-9]*[A-Z]*[a-z]*\)/\1текстДляЗамены/'

И по аналогии, ENV_VAR_2 и т.д. только число - 1 после обратного слеша не удаляйте, он нужен для возврата первого совпадения из регулярки)

А если ее вообще нет в файле?

Ничего страшного не произойдет
А если рядом с ней был комментарий справа?

Предусмотрено в регулярке, можете проверить
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Linux
build engineer
sed и базовое владение регулярными выражениями - то, что вам нужно.
Изменить строку, добавить, удалить, прямо в файле.

Вывести filename на экран с внесенными изменениями
sed -r "нужные вам команды" <filename>

Собственно сохранить внесенные изменения в сам файл.
sed -ir "нужные вам команды" <filename>

Чаще всего sed используется с командой "s" (замена), например
sed -ir "s/ENV_VAR_1=.*/ENV_VAR_1=321/" dev.env
Ответ написан
Zoominger
@Zoominger Куратор тега Linux
System Engineer
Через sed можно заменить значение.
Краткий экскурс: https://habr.com/ru/company/ruvds/blog/327530/
Это ну прям супернативно.
Ответ написан
CityCat4
@CityCat4
У тролля даже мозги - и то каменные!
Зачем таким морочиться? mcedit/nano/vim - наше все
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы