使用JQ将.netrc文件分组转换为JSON对象数组
.netrc 转 JSON 对象数组的 JQ 简洁方案
原始 .netrc 文件内容
machine foo login usera password somepass machine somehost login userb password otherpass
目标格式
需要转换为每组对应一个机器条目的 JSON 对象数组:
[ { "machine": "foo", "login": "usera", "password": "somepass" }, { "machine": "somehost", "login": "userb", "password": "otherpass" } ]
解决方案
直接使用以下 JQ 命令即可完成转换:
jq -Rs ' split("\n") | map(select(length > 0)) | _nwise(3) | map(split(" "; limit:2) | {(.[0]): .[1]}) | add ' ~/.netrc
代码说明
-Rs参数:将整个文件读取为单个字符串,方便按行处理split("\n") | map(select(length > 0)):分割行并过滤掉空行_nwise(3):把数组按每 3 个元素分组,正好对应每个机器的完整配置条目split(" "; limit:2):将每行按空格拆分为键值对,limit:2保证密码含空格时不会被错误拆分add:将每组的 3 个键值对合并为一个完整的 JSON 对象
内容的提问来源于stack exchange,提问作者Christian Bongiorno
相关产品推荐
相关产品推荐

