我使用的是傀儡4.5.3和ini_setting模块1.4.2版本。我需要能够删除ini文件中的一节。例如:
[header]
ip = '1.1.1.1'
hostname = 'myserver'
port = 80我能够使用ensure => absent参数删除ini文件的每个部分,但是我无法找到一种方法来删除节头,或者最好是在一个命令中删除整个过程。
我留下的是
[header]有人知道怎么做吗?不幸的是,我需要保留的文件中还有其他节,所以我不能简单地删除该文件。
谢谢,
发布于 2017-05-23 07:47:53
使用Augeas类型:
augeas { 'remove_ini_header':
incl => '/etc/example.ini',
lens => 'IniFile.lns_loose',
changes => 'rm section[. = "header"]',
}为了稍微分解一下这一点,我首先使用内置的IniFile.lns_loose透镜(即INI文件的“通用”松散解析)和augtool来查看树的当前状态:
$ 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值的节点。
https://stackoverflow.com/questions/44120430
复制相似问题