编辑conf文件而不进入文件

时间:2016-06-09 04:04:09

标签: bash zabbix

我想知道是否有办法编辑conf文件而不进入文件并更改行?

在我的情况下,我需要编辑zabbix-agent conf文件(位于/etc/zabbix/zabbix_agentd.conf),并且我需要更改文件中的一些参数,例如Server Name,DebugLevel和其他

通常我使用vim编辑文件并更改行,但我的想法是直接从bash编辑文件,但我不知道这是否可行。

例如,如果我需要更改参数DebugLevel,那么在bash我会运行:

# /etc/zabbix/zabbix_agentd.conf.DebugLevel=3

这实际上不起作用,但我想为我的问题做这样的事情......

有谁知道??

我测试了大卫所说的内容,但它并没有解决我的问题......文件中有一些注释被评论,我需要取消注释它们,并且我需要更改一些行。< / p>

例如,上面一行:

# DebugLevel=3

我需要改为:

DebugLevel=3

这一行:

Server=127.0.0.1

我需要更改zabbix服务器名称的IP,如下所示:

Server=172.217.28.142

还有其他办法吗?

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,那么您需要sed -i-i选项允许sed编辑文件,-i.bak也会这样做但使用.bak扩展名

创建原始文件的备份

要将文件DebugLevel=3中的DebugLevel=4更改为/etc/zabbix/zabbix_agentd.conf,您可以执行以下操作:

# sed -i.bak "/DebugLevel/s/[0-9][0-9]*$/4/" /etc/zabbix/zabbix_agentd.conf

如果我误解了你的问题,请告诉我。

最后更改值

示例输入文件

$ cat file.txt
DebugLevel=3

使用示例

$ sed -i "/DebugLevel/s/[0-9][0-9]*$/4/" file.txt

$ cat file.txt
DebugLevel=4

删除评论

您可以做同样的事情来取消注释感兴趣的参数,例如:

# sed -i.bak "/DebugLevel/s/^#//" /etc/zabbix/zabbix_agentd.conf

在每种情况下,sed正在第一组正斜杠/.../中搜索标签,然后替换命令被称为s,然后下一组正斜杠之间的表达式,例如/^#/(开头为^匹配),如果匹配,则替换为下一组//中的后续内容(删除评论案例中没有任何内容)。

您需要根据需要调整值,以匹配您需要查找和替换的每个参数。如果您有其他问题以及问题究竟是什么,请告诉我。