interleave для фильтров
Сигнатура
> interleave {flags} ...rest
Флаги
-
--buffer-size, -b {int}: Количество элементов для буферизации из потоков. Увеличивает потребление памяти, но может повысить производительность при большом объёме вывода.
Параметры
-
...rest: Замыкания, которые будут создавать объединяемые потоки.
Типы входных и выходных данных:
| вход | выход |
|---|---|
| list<any> | list<any> |
| nothing | list<any> |
Примеры
Считать две последовательности чисел в отдельные столбцы таблицы. Обратите внимание, что порядок строк со столбцами 'a' и строк со столбцами 'b' произвольный.
> seq 1 50 | wrap a | interleave { seq 1 50 | wrap b }Считать две последовательности чисел, одну из входных данных. Отсортировать для единообразия.
> seq 1 3 | interleave { seq 4 6 } | sort
╭───┬───╮
│ 0 │ 1 │
│ 1 │ 2 │
│ 2 │ 3 │
│ 3 │ 4 │
│ 4 │ 5 │
│ 5 │ 6 │
╰───┴───╯Считать две последовательности без каких-либо входных данных. Отсортировать для единообразия.
> interleave { "foo\nbar\n" | lines } { "baz\nquux\n" | lines } | sort
╭───┬──────╮
│ 0 │ bar │
│ 1 │ baz │
│ 2 │ foo │
│ 3 │ quux │
╰───┴──────╯Выполнить две команды параллельно и добавить аннотации к их выводу.
> (
interleave
{ nu -c "print hello; print world" | lines | each { "greeter: " ++ $in } }
{ nu -c "print nushell; print rocks" | lines | each { "evangelist: " ++ $in } }
)Использовать буфер для повышения производительности потоков с большим объёмом данных.
> seq 1 20000 | interleave --buffer-size 16 { seq 1 20000 } | math sumПримечания
Этот комбинатор удобен для чтения вывода нескольких команд.
Если в interleave переданы входные данные, они будут объединены с выводом замыканий. Это позволяет использовать interleave в любой позиции конвейера.
Поскольку элементы каждого потока будут добавляться в итоговый поток сразу после появления, порядок итогового вывода не гарантируется. Однако порядок элементов из любого отдельного потока гарантированно сохраняется таким же, каким он был в этом потоке.
Если требуется чередовать потоки справедливым образом (по кругу), рассмотрите возможность использования zip { ... } | flatten.
Copyright © 2019–2026 The Nushell Project DevelopersLicensed under the MIT License.
https://www.nushell.sh/commands/docs/interleave.html