使用 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 ...
我想用文件 /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 ...