json - 如何通过在shell中指定开始和结束字符串模式从json中提取所需的字符串
问题描述
我在 Json 下面有有效和无效的文本。我想从中提取有效的字符串。有效的 Json 字符串以 {""emp_id"" 开头并以 ""unit_id"":""true""}} 结尾
起始字符串是固定的,但是在字符串 ""unit_id"" 结尾之后,我们可能会再次获得多个键值对,例如 ""unit_id"":""true"",""ind_val"":"1",""active_flg" ":""Y"" }} 等,但它总是以两个大括号 }} 结尾
.915-0700",,,"42,795""34434",.915-0700",,,"42,795""34434",{""emp_id"":""212345"",""emp_request"":{""request_header"":{""dept_id"":""20182166008974"",""client_id"":""AP"",""medium_id"":""Web"",""country"":""US"",""request_time"":""10:59:42.719""},""mp_req"":{""contexts"":[""PO""],""user_id"":{""ref_id"":"""",""date_of_birth"":""2012-12-12"",""emp_objects"":[{""emp_number"":null,""emp_number_enc"":null,""emp_n1"":""18"",""emp_n2_enc"":null,""emp_n3"":null,""dept_enc"":null}],""char_enc"":null,""ttp"":""304""},""req_info"":{""dept_code"":""H2"",""address"":null,""grp_code"":""S000043K""}}},""additional_request"":{""tax"":"""",""unit_id"":""true""}}^""","2018-08-0607:59:42.915-0700",,,"42,795""34434","mgr_hir":"yes","34545",,,,,
该命令给出以下输出
grep -o '{""emp_id[^}]*}' file.json
{""emp_id"":""212345"",""emp_request"":{""request_header"":{""dept_id"":""20182166008974"",""client_id"":""AP"",""medium_id"":""Web"",""country"":""US"",""request_time"":""10:59:42.719""}
我试图在 ""unit_id"" 之后指定结束模式:它可以有多个字符/键值对直到它到达 }} 但是它不起作用,因为下面的命令中缺少一些东西
grep -o '{""emp_id[^}]*""unit_id"":[a-z]}}$' file.json
请建议。
解决方案
推荐阅读
- applescript-objc - 如何仅显示字符串中的前 3 个数字
- reactjs - React-Bootstrap NavDropDown 是背景色,没有填充完整的下拉菜单,它使顶部和底部保持白色
- node.js - 在电子 + 反应应用程序中执行 child_process
- powershell - PowerShell Active Directory - 将 Get-ADPrincipalGroupMembership 与组名数组进行比较
- php - PHP exec输出与命令行输出不同?
- latex - 带有 URL 的 Latex 命令
- javascript - 初学者:从 Javascript 数组中删除项目
- python - 从大小大于可用内存的列设置 Dask DataFrame 索引
- python - 迁移没有生效(Django - Python)
- c - 定义结构的新实例