如何将brew list --versions的输出转换为JSON格式?
将brew软件列表输出转为指定JSON格式的方法
方法一:使用awk+sed组合处理
直接通过文本处理工具生成符合要求的JSON:
brew list --versions | grep -v "user@mac" | awk 'BEGIN{print "["} {print " {\"name\":\""$1"\",\"version\":\""$2"\"},"} END{print "]"}' | sed '$ s/,$//'
grep -v "user@mac":过滤掉包含命令行提示符的行awk:生成JSON结构框架,将每行的软件名和版本对应到name和version字段sed '$ s/,$//':移除最后一个对象末尾多余的逗号,保证JSON格式合法
方法二:使用jq工具(更规范的JSON处理方式)
如果系统已安装jq(可通过brew install jq安装),可以用更简洁且不易出错的命令:
brew list --versions | grep -v "user@mac" | jq -R 'split(" ") | {name: .[0], version: .[1]}' | jq -s .
-R:告诉jq将每行输入当作原始字符串处理split(" "):按空格拆分每行内容,得到软件名和版本的数组{name: .[0], version: .[1]}:将数组元素映射为JSON对象的对应字段-s .:将所有单个的JSON对象合并成一个数组
注意
如果直接执行brew list --versions时输出没有命令行提示符(即只有软件名和版本的行),可以去掉命令中的grep -v "user@mac"部分。
内容的提问来源于stack exchange,提问作者beli3ver
相关产品推荐
相关产品推荐

