merge deep для фильтров
Сигнатура
> merge deep {flags} (value)
Флаги
-
--strategy, -s {string}: используемая стратегия объединения списков. Возможные значения: table (по умолчанию), overwrite, append, prepend
Параметры
-
value: новое значение для объединения.
Типы входных и выходных данных:
| вход | выход |
|---|---|
| record | record |
| table | table |
Примеры
Рекурсивное объединение двух записей
> {a: 1, b: {c: 2, d: 3}} | merge deep {b: {d: 4, e: 5}}
╭───┬───────────╮
│ a │ 1 │
│ │ ╭───┬───╮ │
│ b │ │ c │ 2 │ │
│ │ │ d │ 4 │ │
│ │ │ e │ 5 │ │
│ │ ╰───┴───╯ │
╰───┴───────────╯Объединение двух таблиц
> [{columnA: 0, columnB: [{B1: 1}]}] | merge deep [{columnB: [{B2: 2}]}]
╭───┬─────────┬─────────────────╮
│ # │ columnA │ columnB │
├───┼─────────┼─────────────────┤
│ 0 │ 0 │ ╭───┬────┬────╮ │
│ │ │ │ # │ B1 │ B2 │ │
│ │ │ ├───┼────┼────┤ │
│ │ │ │ 0 │ 1 │ 2 │ │
│ │ │ ╰───┴────┴────╯ │
╰───┴─────────┴─────────────────╯
Объединение двух записей и содержащихся в них таблиц
> {inner: [{a: 1}, {b: 2}]} | merge deep {inner: [{c: 3}]}
╭───────┬──────────────────────╮
│ │ ╭───┬────┬────┬────╮ │
│ inner │ │ # │ a │ c │ b │ │
│ │ ├───┼────┼────┼────┤ │
│ │ │ 0 │ 1 │ 3 │ ❎ │ │
│ │ │ 1 │ ❎ │ ❎ │ 2 │ │
│ │ ╰───┴────┴────┴────╯ │
╰───────┴──────────────────────╯Объединение двух записей с добавлением содержащихся в них таблиц
> {inner: [{a: 1}, {b: 2}]} | merge deep {inner: [{c: 3}]} --strategy=append
╭───────┬──────────────────────╮
│ │ ╭───┬────┬────┬────╮ │
│ inner │ │ # │ a │ b │ c │ │
│ │ ├───┼────┼────┼────┤ │
│ │ │ 0 │ 1 │ ❎ │ ❎ │ │
│ │ │ 1 │ ❎ │ 2 │ ❎ │ │
│ │ │ 2 │ ❎ │ ❎ │ 3 │ │
│ │ ╰───┴────┴────┴────╯ │
╰───────┴──────────────────────╯
Примечания
Способ объединения пар «ключ — значение», присутствующих и во входных данных, и в аргументе, зависит от их типов.
Скалярные значения (например, числа и строки) во входных данных заменяются соответствующим значением из аргумента. Записи во входных данных объединяются аналогично команде merge, но рекурсивно, а не с заменой вложенных записей.
Способ объединения списков и таблиц определяется флагом --strategy:
- table: таблицы объединяются поэлементно, аналогично команде merge. Списки, не являющиеся таблицами, заменяются.
- overwrite: списки и таблицы заменяются соответствующим значением из аргумента, как и скалярные значения.
- append: к спискам и таблицам во входных данных добавляется соответствующий список из аргумента.
- prepend: перед списками и таблицами во входных данных добавляется соответствующий список из аргумента.
Copyright © 2019–2026 The Nushell Project DevelopersLicensed under the MIT License.
https://www.nushell.sh/commands/docs/merge_deep.html