如果标签已经存在,则将行附加到配置标签
Appending line to config tag if the tag already exists
我正在尝试编写一个脚本来确保 /etc/mysql/my.cnf:
中存在以下标记和配置
[mysqld]
bind-address = 0.0.0.0
我目前有以下命令:
sudo sed -i "/bind-address/d" /etc/mysql/my.cnf
sudo sed -i "/\[mysqld\]/d" /etc/mysql/my.cnf
sudo sed -i "$a[mysqld]\nbind-address = 0.0.0.0" /etc/mysql/my.cnf
我要删除任何包含 'bind-address' 或“[mysqld]”的行,然后附加 mysqld 标记以及我要绑定的地址。但是,如果 mysqld 下还有其他配置,那将无法正常工作。它最终会从:
[mysqld]
some_config
some_config
bind-address = 127.0.0.1
至:
some_config
some_config
[mysqld]
bind-address = 0.0.0.0
有没有更简洁的方法来做到这一点?谢谢。
编辑:我决定只替换 /etc/mysql/mysql.conf.d/mysqld.cnf 下的默认 'bind-address = 127.0.0.1',这将起到相同的作用。
使用 sed,您可以定义一个地址范围来更改 \[mysqld\]
和下一个 ^ *\[
(或文件末尾)之间的绑定地址值:
sed -i '/\[mysqld\]/,/^ *\[/{s/\(bind-address *= *\).*/.0.0.0/}' file
我正在尝试编写一个脚本来确保 /etc/mysql/my.cnf:
中存在以下标记和配置[mysqld]
bind-address = 0.0.0.0
我目前有以下命令:
sudo sed -i "/bind-address/d" /etc/mysql/my.cnf
sudo sed -i "/\[mysqld\]/d" /etc/mysql/my.cnf
sudo sed -i "$a[mysqld]\nbind-address = 0.0.0.0" /etc/mysql/my.cnf
我要删除任何包含 'bind-address' 或“[mysqld]”的行,然后附加 mysqld 标记以及我要绑定的地址。但是,如果 mysqld 下还有其他配置,那将无法正常工作。它最终会从:
[mysqld]
some_config
some_config
bind-address = 127.0.0.1
至:
some_config
some_config
[mysqld]
bind-address = 0.0.0.0
有没有更简洁的方法来做到这一点?谢谢。
编辑:我决定只替换 /etc/mysql/mysql.conf.d/mysqld.cnf 下的默认 'bind-address = 127.0.0.1',这将起到相同的作用。
使用 sed,您可以定义一个地址范围来更改 \[mysqld\]
和下一个 ^ *\[
(或文件末尾)之间的绑定地址值:
sed -i '/\[mysqld\]/,/^ *\[/{s/\(bind-address *= *\).*/.0.0.0/}' file