我正试图通过命令行注释.yml文件中的一行,我正在使用此命令sudo sed -i '/<pattern_to_find>/s/^#//g' /etc/metricbeat/metricbeat.yml
,只要该行未被识别,它就可以正常工作,但我正在尝试更改已识别的行,例如:
setup.kibana:
# Kibana Host
# Scheme and port can be left out and will be set to the default (http and 5601)
# In case you specify and additional path, the scheme is required: http://localhost:5601/path
# IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
# host: "localhost:5601"
# Kibana Space ID
有什么想法可以实现吗?我搞不懂
尽管我强烈建议您不要将-i
选项用于sed
,但除了在此处提及之外,我不会对此进行讨论。你只需要改变你的搜索模式。尝试:
sed -E '/^( *)#( host: "localhost:560!")/s//1 2/'
这将无法匹配硬选项卡。根据不同版本之间的可移植性,这可能是一个很难处理的问题。但以下内容应该有效:
sed -E '/^([[:space:]]*)#( host: "localhost:560!")/s//1 2/'