如何提取简单文本并将其存储到文件中?

时间:2020-09-18 09:43:31

标签: bash ubuntu

我正在为hetzner的云API编写bash脚本,并且需要将服务器的ID存储到文本文件中。使用该命令后,将输出以下内容,

{
  "server": {
    "id": 12345678,
    "name": "servertest-101",
    "status": "initializing",
    "created": "2020-09-18T09:22:21+00:00",

这只是一个片段,但这是响应的第一行。

如何提取和存储该值?

2 个答案:

答案 0 :(得分:0)

api以json格式返回:您没有提供太多信息,但使用jq进行了解析:

$ cat myinput.json
{
  "server": {
    "id": 12345678,
    "name": "servertest-101",
    "status": "initializing",
    "created": "2020-09-18T09:22:21+00:00"
  }
}
$ jq -r .server.id myinput.json
12345678

重定向到文件:

$ jq -r .server.id myinput.json > myoutputfile
$ cat myoutputfile
12345678

答案 1 :(得分:0)

您可以通过管道输出命令以进一步处理该命令:

cat yourjson.json | grep -m 1 -E -o '\"id\": [0-9]+' | cut -d" " -f 2 > yourtextfile.txt

首先,获取json内容,然后通过grep命令将其发送,该命令仅使用正则表达式提取部分"id": 1234567。然后将此结果通过管道传递到cut命令,该命令将其分成一个空格并选择第二部分,即您的值。最后,您将作业结果重定向到所需的文本文件。

如果您确定自己的值将始终是输入中的第一个数字,则只需通过grep进行选择即可:

cat yourjson.json | grep -m 1 -E -o '[0-9]+' > output.txt