Как использовать sed для замены значения переменной, объявленного в текстовом файле - PullRequest
0 голосов
/ 31 марта 2020

Я хотел бы отредактировать файл /etc/environment, чтобы изменить MY_VARIABLE с VALUE_01 на VALUE_02.

Вот контекст файла /etc/environment:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
JAVA_HOME="/usr/java/jdk8/jdk1.8.0_92-1"
MY_VARIABLE=VALUE_01

В идеале я хотел бы использовать команду sed для ее редактирования, например (обратите внимание, что это не рабочая команда):

sed -e 'MY_VARIABLE=VALUE_02' -i /etc/environment

Как мне этого добиться

Ответы [ 2 ]

1 голос
/ 31 марта 2020

Вместо того, чтобы пытаться использовать sed -i и надеяться, что ваша версия sed реализует эту опцию и работает, если она принимает обязательный аргумент или нет (у меня такое ощущение, что вы не используете GNU sed как * Тег 1004 * предполагает, что вы должны быть), просто используйте ed для редактирования файлов в сценариях.

ed -s /etc/environment <<EOF
/^MY_VARIABLE=/c
MY_VARIABLE=VALUE_02
.
w
EOF

c передает первую строку, начинающуюся с MY_VARIABLE=, до заданного новый текст и w перезаписывает файл обратно на диск.

1 голос
/ 31 марта 2020
sed -- 's/MY_VARIABLE=.*/MY_VARIABLE=VALUE_02/' /etc/environment

После проверки работоспособности добавьте параметр -i:

sed -i -- 's/MY_VARIABLE=.*/MY_VARIABLE=VALUE_02/' /etc/environment

Возможно, вам потребуется root доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...