使用 bash 替换文件中的内容

Replace content in file using bash

我想用文件 /etc/openvpn/easy-rsa/vars

中变量 $COUNTRY 中读取的数据替换行 export KEY_COUNTRY="US"

在我以前使用 CentOS6 的构建中,我使用了与 mysql-server 捆绑在一起的命令 replace。但现在该功能不再可用,我正在寻找替代命令的想法来替换数据。

提前致谢。

您可以使用 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 ...