Заменить содержимое в файле, используя bash

Я ищу заменить строку export KEY_COUNTRY="US" данными, считанными в переменную $COUNTRY в файле /etc/openvpn/easy-rsa/vars

В моих предыдущих сборках, которые я использовал с CentOS6, я использовал команду replace, которая связана с mysql-сервером. Но теперь эта функция больше не доступна, я ищу идеи альтернативной команды для замены данных.

Заранее спасибо.

1 ответ

Решение

Ты можешь использовать sed, но имейте в виду, что он может потерпеть неудачу, если $COUNTRY противоречит управляющим символам.

sed -i 's/KEY_COUNTRY="US"/KEY_COUNTRY="'"$COUNTRY"'"/' file

Использовать Perl было бы безопаснее, поскольку он не интерпретирует содержимое переменных как часть синтаксиса:

perl -i -pe 's/KEY_COUNTRY="US"/KEY_COUNTRY="$ENV{COUNTRY}"/' -- file

$COUNTRY должен быть доступен в процессе perl, т.е. вам нужно export это или назначить ему

COUNTRY=$COUNTRY perl ...
Другие вопросы по тегам