Spec-Zone.ru › Nushell

where для фильтров

Фильтрует значения входного списка по условию.

Сигнатура

> where {flags} (condition)

Параметры

  • condition: условие строки фильтра или замыкание.

Типы входных и выходных данных:

вход выход
list<any> list<any>
table table
range any

Примеры

Отфильтруйте строки таблицы по условию.

> [{a: 1} {a: 2}] | where a > 1
╭───┬───╮
│ # │ a │
├───┼───┤
│ 0 │ 2 │
╰───┴───╯

Выведите только файлы из текущего каталога.

> ls | where type == file

Выведите все файлы из текущего каталога размером более 2 КБ.

> ls | where size > 2kb

Выведите все файлы, имена которых содержат «Car».

> ls | where name =~ "Car"

Выведите все файлы, изменённые за последние две недели.

> ls | where modified >= (date now) - 2wk

Отфильтруйте элементы списка с помощью условия строки.

> [1 2 3 4 5] | where $it > 2
╭───┬───╮
│ 0 │ 3 │
│ 1 │ 4 │
│ 2 │ 5 │
╰───┴───╯

Отфильтруйте элементы списка с помощью замыкания.

> [1 2 3 4 5] | where {|x| $x > 2 }
╭───┬───╮
│ 0 │ 3 │
│ 1 │ 4 │
│ 2 │ 5 │
╰───┴───╯

Найдите файлы, имена которых не начинаются с соответствующего порядкового номера.

> ls | where type == file | sort-by name --natural | enumerate | where {|e| $e.item.name !~ $'^($e.index + 1)' } | get item

Найдите файлы с именем «readme» без учёта регистра, используя подвыражение в условии строки.

> ls | where ($it.name | str downcase) =~ readme

Найдите файлы с именем «readme» без учёта регистра, используя только регулярное выражение.

> ls | where name =~ '(?i)readme'

Отфильтруйте строки таблицы по сохранённому условию.

> let cond = {|x| $x.a > 1}; [{a: 1} {a: 2}] | where $cond
╭───┬───╮
│ # │ a │
├───┼───┤
│ 0 │ 2 │
╰───┴───╯

Выведите все числа больше 3, используя существующее замыкание-условие.

> let a = {$in > 3}; [1, 2, 5, 6] | where $a
╭───┬───╮
│ 0 │ 5 │
│ 1 │ 6 │
╰───┴───╯

Примечания

Условие проверяется для каждого элемента входных данных, и в выходные данные включаются только элементы, удовлетворяющие условию.

Условием может быть «условие строки» или замыкание. Условие строки — это специальный сокращённый синтаксис, упрощающий доступ к полям. К каждому элементу входных данных можно обратиться через переменную $it.

В левой части условия строки любое имя поля автоматически дополняется до $it. Например, where type == dir эквивалентно where $it.type == dir. Такое дополнение не выполняется, если передать подвыражение или замыкание в where.

При использовании замыкания элемент передаётся в него как аргумент и как входное значение конвейера ($in). В отличие от условий строки, переменная $it внутри замыканий недоступна.

Условия строки нельзя сохранить в переменной. Чтобы передать условие через переменную, используйте замыкание.

Copyright © 2019–2026 The Nushell Project DevelopersLicensed under the MIT License.
https://www.nushell.sh/commands/docs/where.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API