如您发表评论我:只有什么下[后端],没有别的
的
您可能会对此感兴趣Perl如果不是只是评论我;我将删除和答案。
说你有这样的文件:
[no-backend]
# enabled = no
# data source = average
# type = graphite
# destination = localhost
# prefix = netdata
# hostname = localhost
# update every = 10
# buffer on failures = 10
# timeout ms = 20000
[backend]
# enabled = no
# data source = average
# type = graphite
# destination = localhost
# prefix = netdata
# hostname = localhost
# update every = 10
# buffer on failures = 10
# timeout ms = 20000
[no-backend]
# enabled = no
# data source = average
# type = graphite
# destination = localhost
# prefix = netdata
# hostname = localhost
# update every = 10
# buffer on failures = 10
# timeout ms = 20000
这一个班轮发现,部分为您提供:
perl -lne '$b=$.; $e=($b+10) if /\[backend\]/;print if $b++<$e' file
or readable version
perl -lne 'if(/\[backend\]/){ $b=$.; $e=($b+10); }; if($b++ < $e){ print }' file
和输出:
[backend]
# enabled = no
# data source = average
# type = graphite
# destination = localhost
# prefix = netdata
# hostname = localhost
# update every = 10
# buffer on failures = 10
# timeout ms = 20000
,现在改为print you ca ñ修改该条:
s/#//;s/no/yes/;s/(?<=destination =).+$/192.168.99.38:2003/;s/(?<=hostname =).+$/$HOSTNAME/
完整的一行
perl -lpe 'if(/\[backend\]/){$b=$.;$e=($b+10);};if($b++<$e){ s/#//;s/no/yes/;s/(?<=destination =).+$/192.168.99.38:2003/;s/(?<=hostname =).+$/\$HOSTNAME/ }' file
和输出:
[no-backend]
# enabled = no
# data source = average
# type = graphite
# destination = localhost
# prefix = netdata
# hostname = localhost
# update every = 10
# buffer on failures = 10
# timeout ms = 20000
[backend]
enabled = yes
data source = average
type = graphite
destination = 192.168.99.38:2003
prefix = netdata
hostname = $HOSTNAME
update every = 10
buffer on failures = 10
timeout ms = 20000
[no-backend]
# enabled = no
# data source = average
# type = graphite
# destination = localhost
# prefix = netdata
# hostname = localhost
# update every = 10
# buffer on failures = 10
# timeout ms = 20000
,最后检查输出,如果一切良好后,再您可以使用-i
选项来使用就地编辑功能,例如:
perl -i.bak -lne '...the rest of the script...' file
.bak仅用于获取旧文件的备份。 (如:file.txt.bak)
UPDATE的评论
perl -lpe '$hn=qx(cat /etc/hostname);chomp $hn;if(/\[backend\]/){$b=$.;$e=($b+10);};if($b++<$e){s/#//;s/no/yes/;s/(?<=destination =).+$/192.168.99.38:2003/;s/(?<=hostname =).+$/$hn/ }' file
和输出:
...
...
[backend]
enabled = yes
data source = average
type = graphite
destination = 192.168.99.38:2003
prefix = netdata
hostname = k-five
update every = 10
buffer on failures = 10
timeout ms = 20000
...
...
所以你只需要编辑下面的'[后端]的配置'如果存在与否要编辑的所有部分在[section-name]下面? –
@ k-five只有'[backend]'下的内容,没有别的。对不起,不够清楚, – Aborted
@Inian我看不到你的答案。我之前看到一个,我打算应用它,但现在已经消失了。 – Aborted