首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >完全移除ini_setting

完全移除ini_setting
EN

Stack Overflow用户
提问于 2017-05-22 19:09:01
回答 1查看 573关注 0票数 2

我使用的是傀儡4.5.3和ini_setting模块1.4.2版本。我需要能够删除ini文件中的一节。例如:

代码语言:javascript
复制
[header]
ip = '1.1.1.1'
hostname = 'myserver'
port = 80

我能够使用ensure => absent参数删除ini文件的每个部分,但是我无法找到一种方法来删除节头,或者最好是在一个命令中删除整个过程。

我留下的是

代码语言:javascript
复制
[header]

有人知道怎么做吗?不幸的是,我需要保留的文件中还有其他节,所以我不能简单地删除该文件。

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-23 07:47:53

使用Augeas类型:

代码语言:javascript
复制
augeas { 'remove_ini_header':
  incl    => '/etc/example.ini',
  lens    => 'IniFile.lns_loose',
  changes => 'rm section[. = "header"]',
}

为了稍微分解一下这一点,我首先使用内置的IniFile.lns_loose透镜(即INI文件的“通用”松散解析)和augtool来查看树的当前状态:

代码语言:javascript
复制
$ augtool -t "IniFile.lns_loose incl /etc/example.ini"
augtool> print /files/etc/example.ini
/files/etc/example.ini
/files/etc/example.ini/section = "header"
/files/etc/example.ini/section/ip = "'1.1.1.1'"
/files/etc/example.ini/section/hostname = "'myserver'"
/files/etc/example.ini/section/port = "80"

整个部分位于树的一个部分,因此为该部分调用rm将删除整个子树。

要匹配标头部分,需要搜索名为section的节点,其中值(右侧)为header。该命令的[. = "header"]部分是一个路径表达式,用于过滤具有header值的节点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44120430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档