我想知道是否有办法编辑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
还有其他办法吗?
答案 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
,然后下一组正斜杠之间的表达式,例如/^#/
(开头为^
匹配),如果匹配,则替换为下一组//
中的后续内容(删除评论案例中没有任何内容)。
您需要根据需要调整值,以匹配您需要查找和替换的每个参数。如果您有其他问题以及问题究竟是什么,请告诉我。