当前位置:网站首页>awk处理JSON处理
awk处理JSON处理
2022-07-07 18:37:00 【栗少】
嵌套解析和列表会有点 bug... 不过满足轻度使用了 #!/bin/bash json_str='{ "access_token":"12345678-1234-1234-1234-123456789012", "token_type":"bearer", "refresh_token":"12345678-1234-1234-1234-12345678901" }' get_json_value() { awk -v json="$1" -v key="$2" -v defaultValue="$3" 'BEGIN{ foundKeyCount = 0 while (length(json) > 0) { pos = match(json, "\""key"\"[ \\t]*?:[ \\t]*"); if (pos == 0) {if (foundKeyCount == 0) {print defaultValue;} exit 0;} ++foundKeyCount; start = 0; stop = 0; layer = 0; for (i = pos + length(key) + 1; i <= length(json); ++i) { lastChar = substr(json, i - 1, 1) currChar = substr(json, i, 1) if (start <= 0) { if (lastChar == ":") { start = currChar == " " ? i + 1: i; if (currChar == "{" || currChar == "[") { layer = 1; } } } else { if (currChar == "{" || currChar == "[") { ++layer; } if (currChar == "}" || currChar == "]") { --layer; } if ((currChar == "," || currChar == "}" || currChar == "]") && layer <= 0) { stop = currChar == "," ? i : i + 1 + layer; break; } } } if (start <= 0 || stop <= 0 || start > length(json) || stop > length(json) || start >= stop) { if (foundKeyCount == 0) {print defaultValue;} exit 0; } else { print substr(json, start, stop - start); } json = substr(json, stop + 1, length(json) - stop) } }' } echo $(get_json_value "${json_str}" "refresh_token")
边栏推荐
- Deep learning model compression and acceleration technology (VII): mixed mode
- Get webkitformboundary post login
- ERROR: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
- 华为CE交换机下载文件FTP步骤
- 嵌入式系统真正安全了吗?[ OneSpin如何为开发团队全面解决IC完整性问题 ]
- VMWare中虚拟机网络配置
- OneSpin | 解决IC设计中的硬件木马和安全信任问题
- MSE API learning
- 开发一个小程序商城需要多少钱?
- 一. 基础概念
猜你喜欢
With st7008, the Bluetooth test is completely grasped
Mongodb learn from simple to deep
CodeSonar网络研讨会
Klocwork 代码静态分析工具
Mrs offline data analysis: process OBS data through Flink job
Machine learning notes - explore object detection datasets using streamlit
Optimization cases of complex factor calculation: deep imbalance, buying and selling pressure index, volatility calculation
如何满足医疗设备对安全性和保密性的双重需求?
How does codesonar help UAVs find software defects?
使用高斯Redis实现二级索引
随机推荐
Don't fall behind! Simple and easy-to-use low code development to quickly build an intelligent management information system
4G设备接入EasyGBS平台出现流量消耗异常,是什么原因?
智能软件分析平台Embold
Tensorflow2.x下如何运行1.x的代码
测量楼的高度
浅尝不辄止系列之试试腾讯云的TUIRoom(晚上有约,未完待续...)
Optimization cases of complex factor calculation: deep imbalance, buying and selling pressure index, volatility calculation
Lingyun going to sea | yidiantianxia & Huawei cloud: promoting the globalization of Chinese e-commerce enterprise brands
guava多线程,futurecallback线程调用不平均
Helix QAC 2020.2新版静态测试工具,最大限度扩展了标准合规性的覆盖范围
[MySQL - Basic] transactions
Traversée des procédures stockées Oracle
【解决】package ‘xxxx‘ is not in GOROOT
网络原理(1)——基础原理概述
使用高斯Redis实现二级索引
[award publicity] issue 22 publicity of the award list in June 2022: Community star selection | Newcomer Award | blog synchronization | recommendation Award
kubernetes之创建mysql8
机械臂速成小指南(十二):逆运动学分析
如何满足医疗设备对安全性和保密性的双重需求?
华为CE交换机下载文件FTP步骤