|
在Shell中处理复杂的JSON数据,一般有以下三种方式:jq:jq是一款强大的JSON处理工具,支持过滤、修改、重组和生成JSON数据。Python:使用Python来处理复杂的JSON数据。结合了Shell脚本的便利性和Python处理JSON的强大能力grep/sed/awk:在无其他工具的情况下使用grep/sed/awk等(不推荐)一、基于jq处理JSON如果未安装jq,会提示如下错误-bash:jq:commandnotfound1安装jq#官方源中目前没有包含jq,因此需要首先安装epelyum-yinstallepel-release#安装jqyum-yinstalljq12345示例数据:JSON文件data.json{"user":{"name":"Alice","age":30,"contacts":[{"type":"email","value":"alice@example.com"},{"type":"phone","value":"123-456-7890"}]}}12345678910加载并将整个JSON内容以格式化的方式输出catdata.json|jq'.'1取某个特定的值:namecatdata.json|jq'.user.name'#输出"Alice"12处理数组获取所有联系人信息,输出每个联系人的信息catdata.json|jq'.user.contacts[]'1获取所有联系人的值catdata.json|jq'.user.contacts[].value'1过滤数据使用select函数来过滤数据:获取所有电子邮件地址catdata.json|jq'.user.contacts[]|select(.type=="email")|.value'1嵌套数据结构的修改、合并添加一个新的联系人catdata.json|jq'.user.contacts+=[{"type":"fax","value":"098-765-4321"}]'1将添加一个新的联系人后的JSON保存到文件catdata.json|jq'.user.contacts+=[{"type":"fax","value":"098-765-4321"}]'>new_data.json1二、基于Python来处理Json可以直接在Shell脚本中使用Python的-c选项执行一段Python代码来处理JSON数据(示例数据同上)取某个特定的值:namecatdata.json|python-c'importjson,sys;data=json.load(sys.stdin);print(data["user"]["name"])'1提取第一个联系人的类型python-c'importjson,sys;data=json.load(sys.stdin);print(data["user"]["contacts"][0]["type"])'
|
|