【发布时间】:2017-02-15 14:45:43
【问题描述】:
{
"assignedTo": [
"Daniel Raisor",
"Dalton Leslie",
"Logan Petro"
]
}
我想提取 Daniel Raisor Dalton Leslie 和 Logan Petro 并将它们分配给一个单独的变量,例如 assignTo=Daniel Raisor,Dalton Leslie,Logan Petro 我的 unix 也不支持 jq ,我需要使用 grep 或 sed 命令来做到这一点
【问题讨论】:
-
如果您需要使用JSON,您需要获得一个可以使用JSON的工具;
grep等。不要。此外,未预装jq并不一定意味着不支持jq;它非常便携且易于安装。 -
grep或sed无法可靠地解析 JSON。你可以想出一个可怕的 hack 来使用它们,但它会是一个 hack,而且它会很脆弱——比如,编码或内容的变化没有任何东西用语法做就可以破解了。 -
相比之下——你有 Python 解释器吗?从 shell 调用 Python 非常容易,并在其中使用内置的 JSON 解析模块。
-
请务必检查您的解决方案是否适用于不同的空格——即。
{"assignedTo":["Daniel Raisor","Dalton Leslie","Logan Petro"]}都在一条线上。或者 extra 换行符放在随机位置。或带有引号的名称,例如"Logan \"The Man\" Wilson"。 -
Falsehoods Programmers Believe About Names。在尝试确定哪些字符不可能是名称的一部分时,请考虑其中的一些,因此可以用来将两个名称彼此分开。