linux - 使用 shell 脚本解析 json

标签 linux bash shell

我有一个 json,我想 grep 网站 URL ( http://mywebsite.com ),如何使用 shell 脚本 grep 。

P.S:我知道有像“jq”这样的工具可以使它更容易,但我想使用 sed/awk/grep 实用程序来完成。

例如:test.json

{
  "name"       : "xyz", 
  "age"        : "25",
  "websiteurl" : "http://mywebsite.com" 
}

到目前为止我已经尝试过了;

cat test.json | grep -i website* | cut -d ':' -f2

输出:

"http

但是当我如上所示运行上述命令时,它还会分隔 http 和双斜杠 (//) 之间的冒号 (:),这是我不想要的。我希望将整个 url 存储在变量中。

最佳答案

好吧,如果你打算做错事(比如不使用jq),至少少做一些错误

awk '/website/ {gsub("\"", "", $3); print $3}' test.json

说明

awk 将输入拆分为多个字段,因此这里 $3 是与 website 匹配的行的第三个字段(从 1 开始)。然后删除引号(如果存在)并打印结果。

关于linux - 使用 shell 脚本解析 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44252308/

相关文章:

regex - 我在 Linux 中使用带有正则表达式的 sed 但没有得到预期的答案

php - 有选择地使用 Sed 替换 SQL 语法

linux - shell 脚本 'installer'

python - 导入matplotlib.pyplot时如何修复 "object has no attribute"错误

linux - Linux 内核中的 parse_elf() 中的段是在哪里复制的?

bash - 如何在bash中删除现有数组中的重复元素?

shell - 如何使用 tox 运行自定义命令而不在 tox.ini 中指定它?

php - 如何在window操作系统中使用安装在linux操作系统上的PHP接口(interface)?

linux - ZSH 中的 Kill/Yank(剪切/粘贴)

Unix:如何读取多行?