从bash中的嵌套json键中提取值

从bash中的嵌套json键中提取值,bash,sed,terminal,grep,Bash,Sed,Terminal,Grep,假设我有以下JSON: { "id": "Ab12", "details": "{\"timeValue\":null,\"lastModifiedIn\":\"PHX\"}", "version": 3 } 我想在不使用jq命令的情况下提取'lastModifiedIn'键的值。 基本上,我寻求的结果是‘PHX’ 有没有一

假设我有以下JSON:

{
  "id": "Ab12",
  "details": "{\"timeValue\":null,\"lastModifiedIn\":\"PHX\"}",
  "version": 3
}
我想在不使用jq命令的情况下提取'lastModifiedIn'键的值。 基本上,我寻求的结果是‘PHX’


有没有一种方法可以使用基本的shell脚本来提取此信息?

这很草率,但考虑到输入和您不使用jq的要求,这可能就足够满足您的需要了:

$ sed -n 's/.*"lastModifiedIn\\":\\"\([^\\]*\).*/\1/p' file
PHX

这是草率的,但考虑到输入和您不使用jq的要求,这可能足以满足您的目的:

$ sed -n 's/.*"lastModifiedIn\\":\\"\([^\\]*\).*/\1/p' file
PHX

为什么详细信息是字符串{\lastModifiedIn\:\PHX\}而不是对象{lastModifiedIn:PHX}?这使得解析变得非常困难。你能以某种方式影响这个数据的生成器吗?json实际上是从数据库调用中检索的,数据库调用将json存储为一个字符串。我刚刚检索到它,现在我想提取值我对脚本编写不太熟悉,但通过谷歌搜索,我意识到我可能需要使用grep或sed来提取该值。但是,我不太确定该怎么做如果你走这条路,每次你从这个数据库中提取一些东西时,你都必须处理它。与数据库人员交谈。询问他们如何正确提取json对象。但是,这更像是一个修补程序,需要从开发人员端解决。为什么详细信息是字符串{\lastModifiedIn\:\PHX\},而不是对象{lastModifiedIn:PHX}?这使得解析变得非常困难。你能以某种方式影响这个数据的生成器吗?json实际上是从数据库调用中检索的,数据库调用将json存储为一个字符串。我刚刚检索到它,现在我想提取值我对脚本编写不太熟悉,但通过谷歌搜索,我意识到我可能需要使用grep或sed来提取该值。但是,我不太确定该怎么做如果你走这条路,每次你从这个数据库中提取一些东西时,你都必须处理它。与数据库人员交谈。询问他们如何正确提取json对象。但是,这更像是一个热修复程序,需要从开发人员的角度来解决。谢谢Ed。只是好奇,而不是“文件”。如果我想通过管道提供输入,我们该怎么做?与使用任何其他工具一样:foo | sed“script”而不是sed“script”文件。谢谢Ed。只是好奇,如果我想通过管道提供输入,我们如何才能做到这一点?与使用任何其他工具的方法相同:foo | sed“script”而不是sed“script”文件。