在 bash 中使用 sed 修改配置文件

用户2650277

我正在尝试设置net.ipv4.ip_forward为 1 in /etc/sysctl.conf.以下工作正常,但它肯定会遗漏一些边缘情况

#Enable IP packet forwarding so that our VPN traffic can pass through.
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf 
sed -i 's/#net.ipv4.ip_forward = 1/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf 
grep -qF "net.ipv4.ip_forward" /etc/sysctl.conf  || echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf 

例如,如果 sysctl.conf 包含以下任何一项,它将不匹配

#net.ipv4.ip_forward=1

##net.ipv4.ip_forward=1.

有没有更可靠的方法来修改配置文件中的设置?

伊尼安

您可以使用该-r开关启用扩展正则表达式(ERE),GNU sed并可选择匹配空白和#正则表达式?可选项目锚点的出现

sed -ir 's/#{1,}?net.ipv4.ip_forward ?= ?(0|1)/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf

这将匹配以下任何输入行并使用替换部件对其进行修改 net.ipv4.ip_forward = 1

net.ipv4.ip_forward=0
net.ipv4.ip_forward = 0
#net.ipv4.ip_forward=0
##net.ipv4.ip_forward = 0
#net.ipv4.ip_forward=1
##net.ipv4.ip_forward=1
#net.ipv4.ip_forward = 1
##net.ipv4.ip_forward = 1

请参阅RegEx 演示以获得更清晰的信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用sed和bash生成网络配置文件

来自分类Dev

使用bash和sed编辑配置文件

来自分类Dev

如何使用sed编辑配置文件

来自分类Dev

使用awk / sed更改配置文件

来自分类Dev

使用 sed 将 #' 插入配置文件

来自分类Dev

使用 Sed 覆盖 url 配置文件

来自分类Dev

在bash中使用sed删除文件中以“ _”开头的单词

来自分类Dev

Bash使用sed解析文件

来自分类Dev

从bash使用openssl备用配置文件?

来自分类Dev

使用 bash 脚本编辑配置文件

来自分类Dev

如何使用Bash sed修改整数

来自分类Dev

使用SED取消配置文件行的替换,并替换Linux配置文件中的文本

来自分类Dev

如何使用sed替换配置文件的变量?

来自分类Dev

使用sed在配置文件行中提取部分

来自分类Dev

使用sed在配置文件中查找和更改信息

来自分类Dev

使用 sed 从配置文件中删除参数

来自分类Dev

使用 sed 命令在 linux 中编辑配置文件

来自分类Dev

在bash脚本中使用sed替换多行

来自分类Dev

在 bash 中使用 grep 和 sed 的问题

来自分类Dev

如何在bash shell中使用节读取配置文件

来自分类Dev

如何在Visual Studio 2019中使用git bash终端配置文件?

来自分类Dev

如何在bash shell中使用节读取配置文件

来自分类Dev

Bash 函数在 tomcat 构建脚本中使用多行文本覆盖 jdbc 配置文件

来自分类Dev

使用sed进行配置修改

来自分类Dev

在tcl文件中使用sed

来自分类Dev

使用git bash(Windows)创建ssh配置文件的命令?

来自分类Dev

使用bash递归合并yaml配置文件

来自分类Dev

如何使用内部变量创建配置文件bash脚本

来自分类Dev

使用bash脚本替换配置文件变量