Shell解析含空格字符串的JSON截断问题及简化方案问询
批量提取JSON中带空格字符串的简洁方法
之前用grep逐个提取JSON字段,不仅会因为空格截断像“aaa bbb ccc ddd eee”这类带空格的字符串,还得重复写大量冗余代码。解决这类问题最靠谱的方式是用专门的JSON处理工具jq,它能正确识别JSON的字符串边界,还能一次性批量提取多个字段。
示例操作
假设你的Initial.json内容如下:
{ "title": "aaa bbb ccc ddd eee", "content": "hello shell json example", "author": "test user" }
方法1:直接批量输出指定字段
想一次性查看所有需要的字段,直接用jq指定多个字段路径:
jq -r '.title, .content, .author' Initial.json
输出结果会完整保留每个字段的空格:
aaa bbb ccc ddd eee hello shell json example test user
方法2:批量赋值给Shell变量
要把这些字段直接存到Shell变量里,用jq的@sh格式生成安全的赋值语句,再通过eval执行,能避免特殊字符的问题:
# 生成赋值语句并执行 eval "$(jq -r '@sh "title=\(.title) content=\(.content) author=\(.author)"' Initial.json)" # 验证变量是否正确 echo "$title" # 完整输出aaa bbb ccc ddd eee echo "$content" echo "$author"
这种方式不用重复写提取逻辑,一次就能处理所有需要的字段,还能保证字符串内容完整不截断。
内容的提问来源于stack exchange,提问作者Joy
相关产品推荐
相关产品推荐

