管道卷曲输出,Grep 以 Ruby 中的 Txt 文件结尾

Pipe Curl Output with Grep ending o Txt File in Ruby

我在 ruby 中使用 curl 时遇到问题。我想要 运行 一个 ruby 脚本,它应该像这样存储一个 JSON 类型的对象

{
    "remote":  [
        {"name": "cast-1",
         "id": 1212
        },
        {"name": "cast-1",
         "id": 1214
        },
        {"name": "home-11",
         "id": 3212
        },
        {"name": "cast-3",
         "id": 3212
        },
        {"name": "cast-3",
         "id": 3213
        },
        {"name": "cast-4",
         "id": 4211
        }

    ]
}

在文本文件中。我映射并搜索了 curl 输入以获取所需的条目。 现在,当我 运行 脚本时,我的 txt 文件弹出为空。 我尝试过的例子

#ruby

`curl -m 10 -s -H '[...]' "https://example_with_json_file.com" | jq -r .remote | group_by(.name) | map({ (.[0].name): map(.id) }) | "\(.[])" | grep '3\|4\|11' > file.txt` 

foo = []

File.open(file.txt) do |file|
  foo = file.readlines
end
[...]

运行在我的终端作品中输入以上内容。我尝试在 ruby 示例中使用 Kernel.system 订单系统。没有任何效果。

如何将此输出通过管道传输到 txt 文件

{"cast-3":[3212,3213]}
{"cast-4":[4211]}
{"home-11":[3212]}

或者一般来说,是否可以 运行 在一行中输入 curl,可以使用 ruby 执行?

总是最好用一种语言做事。喜欢:

response = HTTParty.get('https://path/to/json')
JSON.parse(response)
...

如果您想将其与 Bash 混合使用,请尝试:

bar = `curl -m 10 -s -H '[...]' "https://example_with_json_file.com" | jq -r .remote | group_by(.name) | map({ (.[0].name): map(.id) }) | "\(.[])" | grep '3\|4\|11'`
foo = bar.split(/\n/)
File.write('/path/to/file', bar)