我有一个ini文件,只能有两个状态。状态一:
[General]
StartWithLastProfile=0
[Profile0]
Name=default
IsRelative=1
Path=Profiles/kn081mln.default
Default=1
[Profile1]
Name=Dark
IsRelative=1
Path=Profiles/elqlrk57.Dark
状态二:
[General]
StartWithLastProfile=0
[Profile0]
Name=default
IsRelative=1
Path=Profiles/kn081mln.default
[Profile1]
Name=Dark
IsRelative=1
Path=Profiles/elqlrk57.Dark
Default=1
两者之间的区别在于Profile0
或Profile1
段是否具有键Default=1
。如何检查Default=1
这两节中的哪一部分正在使用bash?
答案 0 :(得分:3)
您可以使用
awk '/\[Profile[01]\]/ {label=$0} /Default/ {print label}'
说明:
如果一行与类别标签匹配,请记住当前类别。
我在这里使用的类别模式是\[Profile[01]\]
。由于[]
在不进行转义时被视为集合,因此必须对文字[]
进行转义,并将[01]
用作字符集。
如果出现所需键,请输出标签。
答案 1 :(得分:1)
经过一番修补,发现可以使用bash脚本中的一些Python来完成此操作:
#!/bin/bash
foo=$(python - << EOF
import configparser
config = configparser.ConfigParser()
config.read('/path/to/file.ini')
if config.has_option('Profile0', 'Default'):
print('Default is Profile0')
else:
print('Default is Profile1')
EOF)
echo $foo