преобразовать массив JSON в строку, разделенную пробелами

Слияние происходит, когда два запроса ввода-вывода могут быть объединены в один запрос большей -длины. Например, запись в блок 1234, за которой следует запись в блок 1235, может быть объединена в один запрос ввода-вывода для блока 1234 длиной 2 блока. Поскольку такого рода ситуации могут быть довольно распространенными, стоит приложить усилия к ядру, чтобы выполнить слияние, освободить структуру запросов ввода-вывода и уменьшить накладные расходы на прерывания.

Если вас интересуют более подробные статистические данные по этому аспекту ввода-вывода, см. руководство пользователя btt в формате pdf , которое является частью blktrace.

0
24.06.2021, 11:12
1 ответ

Я думаю, это то, что вы ищете.

Я смоделировал этот ввод JSON:

[
  {
    "name" : "Allow",
    "source" : [ "*", "0.0.0.0"]
  },
  {
    "name" : "Disallow",
    "source" : [ "foo", "9.8.7.5", "4.3.2.1"]
  }
]

и немного изменил ваш пример скрипта:

#!/bin/bash

test() {
    local file="test.json"
    while read val; do
        local name
        local source

        name=$(jq --raw-output '.name' <<< "${val}")
        source=$(jq --raw-output '.source | join(" ")' <<< "${val}")
        echo __test "${name}" "${source}"
    done < <(cat ${file} | jq -rc '.[]')
}

test

и я получаю:

./test.sh

__test Allow * 0.0.0.0
__test Disallow foo 9.8.7.5 4.3.2.1
0
28.07.2021, 11:22

Теги

Похожие вопросы