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