linux - 从json文件curl下载json文件

原文 标签 linux shell curl

我有一个json文件,其结构如下所示:

{
    url: "https://mysite.com/myjsonfile",
    version_number: 69,
}

此json文件可从mysite.com/myrootjsonfile访问
我想运行一个加载数据脚本来访问mysite.com/myrootjsonfile,并使用curl从url字段加载json内容,并将结果内容保存到本地存储。
这是我迄今为止的尝试。
curl -o assets/content.json 'https://mysite.com/myrootjsonfile' | grep -Po '(?<="url": ")[^"]*' 

不幸的是,与其从mysite.com/myjsonfile保存内容,不如从上面保存内容:mysite.com/myrootjsonfile。有人能指出我可能做错了什么吗?记住在一个全新的卷曲。谢谢!

最佳答案

它保存myrootjsonfile中的内容,因为这就是您告诉curl要做的事情-将该文件保存到assets/content.json位置,然后使用stdin(空)保存。您需要使用两个grep命令,一个用于下载根文件(并对其进行处理以查找第二个文件的url),另一个用于下载所需的实际内容。可以使用命令替换:

my_url=$(curl https://mysite.com/myrootjsonfile | grep -Po '(?<=url: )[^,]*')
curl -o assets/content.json "$my_url"

我还更改了curlregex-这一个匹配“url:”后面的一个非逗号字符字符串。

相关文章:

linux - 为什么需要在脚本文件的开头加上#!/ bin / bash?

mysql - Linux Shell脚本执行mysql脚本Shell后捕获退出代码

linux - 如何修剪文件-删除除前两列以外的各列中具有相同值的行

php - 在CURL中使用Cookie罐时,如何注入Cookie?

linux - 在Vagrant共享文件夹中安装NPM会导致文件系统问题

linux - 无法安装贯通图

linux - Linux:每50分钟随机运行一条命令

go - 如何管卷入Go程序?

linux - 从Linux Live USB在Windows上安装软件

linux - 在Bash中,为什么x = 100 echo $ x不打印任何内容?