使用 Mac 中的 bash 仅提取 plist 中的 <key>
Extract only the <key> in plist using bash in Mac
我想提取以下plist 中Countries 中的键值。
例如,我希望输出文件仅包含以下键:
USA
ITALY
但是如果我使用下面的脚本,它将打印 Countries 下的所有嵌套元素,包括:
首都
华盛顿特区
大陆
北美。
如何修改脚本,使其只打印“国家/地区”下的键?
output=$(/usr/libexec/PlistBuddy "$infoplistPath/Info.plist" -c "Print :Nation:Countries")
这是 plist:
<dict>
<key>Nation</key>
<dict>
<key>Countries</key>
<dict>
<key>USA</key>
<dict>
<key>Capital</key>
<string>Washington DC</string>
<key>Continent</key>
<string>North America</string>
</dict>
<key>Italy</key>
<dict>
<key>Capital</key>
<string>Rome</string>
<key>Continent</key>
<string>Europe</string>
</dict>
</dict>
</dict>
</dict>
我找不到直接处理 PlistBuddy
的方法,但通过一些修补,我能够处理输出以获得您想要的内容:
output=$(/usr/libexec/PlistBuddy "$infoplistPath/Info.plist" -c "Print :Nation:Countries" | grep Dict | sed 's/^\(.*\) =.*//g' | grep -v "Dict {" | awk '{print }')
当你回显 $output
的内容时,它会返回:
$ echo $output
USA Italy
我想提取以下plist 中Countries 中的键值。 例如,我希望输出文件仅包含以下键:
USA
ITALY
但是如果我使用下面的脚本,它将打印 Countries 下的所有嵌套元素,包括: 首都 华盛顿特区 大陆 北美。
如何修改脚本,使其只打印“国家/地区”下的键?
output=$(/usr/libexec/PlistBuddy "$infoplistPath/Info.plist" -c "Print :Nation:Countries")
这是 plist:
<dict>
<key>Nation</key>
<dict>
<key>Countries</key>
<dict>
<key>USA</key>
<dict>
<key>Capital</key>
<string>Washington DC</string>
<key>Continent</key>
<string>North America</string>
</dict>
<key>Italy</key>
<dict>
<key>Capital</key>
<string>Rome</string>
<key>Continent</key>
<string>Europe</string>
</dict>
</dict>
</dict>
</dict>
我找不到直接处理 PlistBuddy
的方法,但通过一些修补,我能够处理输出以获得您想要的内容:
output=$(/usr/libexec/PlistBuddy "$infoplistPath/Info.plist" -c "Print :Nation:Countries" | grep Dict | sed 's/^\(.*\) =.*//g' | grep -v "Dict {" | awk '{print }')
当你回显 $output
的内容时,它会返回:
$ echo $output
USA Italy