Nushell
安装 Nu !
快速开始
  • Nushell 之书
  • 命令参考列表
  • 实战指南
  • 语言参考指南
  • 贡献指南
博客
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub
安装 Nu !
快速开始
  • Nushell 之书
  • 命令参考列表
  • 实战指南
  • 语言参考指南
  • 贡献指南
博客
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub
  • 简介
  • 安装
    • 默认 Shell
  • 快速入门
    • 快速入门
    • 在系统中四处移动
    • 用 Nu 的方式思考
    • Nushell 速查表
  • Nu 基础篇
    • 数据类型
    • 加载数据
    • 管道
    • 处理字符串
    • 处理列表
    • 处理记录(Records)
    • 处理表格
    • 导航和访问结构化数据
    • 特殊变量
  • Nushell 编程
    • 自定义命令
    • 别名
    • 运算符
    • 变量
    • 控制流
    • 脚本
    • 模块
      • 使用模块
      • 创建模块
    • 覆层
    • 排序
    • 测试你的 Nushell 代码
    • 最佳实践
  • Nu 作为 Shell 使用
    • 配置
    • 环境
    • 标准输入、输出和退出码
    • 运行系统(外部)命令
    • 如何配置第三方提示
    • 目录栈
    • Reedline,Nu 的行编辑器
    • 自定义补全
    • 外部命令
    • Nu 的配色和主题
    • 钩子
    • 后台任务
  • 迁移到 Nu
    • 从 Bash 到 Nu
    • 从 CMD.EXE 到 Nu
    • 从其他 Shell 或 DSL 到 Nu
    • 从命令式语言到 Nu
    • 从函数式语言到 Nu
    • Nushell 运算符
  • 设计说明
    • Nushell代码执行原理
  • (不怎么)高级篇
    • 标准库 (预览版)
    • Dataframes
    • 元数据
    • 创建你自己的错误
    • 并行
    • 插件
    • explore

处理记录(Records)

提示

记录大致相当于表格中的单行数据。你可以把记录看作是一个"单行表格"。因此,大多数对表格行操作的命令也适用于记录。例如,update命令可以用于记录:

let my_record = {
 name: "Sam"
 age: 30
 }
$my_record | update age { $in + 1 }
# => ╭──────┬─────╮
# => │ name │ Sam │
# => │ age  │ 31  │
# => ╰──────┴─────╯

注意my_record变量是不可变的。管道操作后更新的记录会如代码块所示打印出来。my_record变量仍保持原值 - $my_record.age仍然是30。

创建记录

记录是零个或多个键值对的集合。它类似于JSON对象,可以使用相同的语法创建:

# Nushell
{ "apples": 543, "bananas": 411, "oranges": 0 }
# => ╭─────────┬─────╮
# => │ apples  │ 543 │
# => │ bananas │ 411 │
# => │ oranges │ 0   │
# => ╰─────────┴─────╯
# JSON
'{ "apples": 543, "bananas": 411, "oranges": 0 }' | from json
# => ╭─────────┬─────╮
# => │ apples  │ 543 │
# => │ bananas │ 411 │
# => │ oranges │ 0   │
# => ╰─────────┴─────╯

在Nushell中,记录的键值对也可以用空格或换行符分隔。

提示

由于记录可能有很多字段,默认情况下它们会垂直显示而不是从左到右。要水平显示记录,可以将其转换为nuon格式。例如:

  {
    name: "Sam"
    rank: 10
  } | to nuon
  # =>   {name: Sam, rank: 10}

更新记录

与列表类似,你可以在记录中insert值。例如,让我们添加一些梨子:

{ "apples": 543, "bananas": 411, "oranges": 0 }
| insert pears { 21 }
# => ╭─────────┬─────╮
# => │ apples  │ 543 │
# => │ bananas │ 411 │
# => │ oranges │ 0   │
# => │ pears   │ 21  │
# => ╰─────────┴─────╯

你也可以update值:

{ "apples": 543, "bananas": 411, "oranges": 0 }
| update oranges { 100 }
# => ╭─────────┬─────╮
# => │ apples  │ 543 │
# => │ bananas │ 411 │
# => │ oranges │ 100 │
# => ╰─────────┴─────╯

要创建带有新字段的记录副本,你可以:

  • 使用merge命令:

    let first_record = { name: "Sam", rank: 10 }
    $first_record | merge { title: "Mayor" }
    # =>   ╭───────┬───────╮
    # =>   │ name  │ Sam   │
    # =>   │ rank  │ 10    │
    # =>   │ title │ Mayor │
    # =>   ╰───────┴───────╯
  • 使用展开运算符(...)在新记录中展开原记录:

    let first_record = { name: "Sam", rank: 10 }
    {
      ...$first_record
      title: "Mayor"
    }
    # =>   ╭───────┬───────╮
    # =>   │ name  │ Sam   │
    # =>   │ rank  │ 10    │
    # =>   │ title │ Mayor │
    # =>   ╰───────┴───────╯

遍历记录

你可以先将记录转换为表格,然后遍历其键值对:

{ "apples": 543, "bananas": 411, "oranges": 0 }
| transpose fruit count
| each {|f| $"We have ($f.count) ($f.fruit)" }
# => ╭───┬─────────────────────╮
# => │ 0 │ We have 543 apples  │
# => │ 1 │ We have 411 bananas │
# => │ 2 │ We have 0 oranges   │
# => ╰───┴─────────────────────╯

访问记录值

有关如何访问记录值(和其他结构化数据)的详细说明,请参阅导航和访问结构化数据。

其他记录命令

参见使用表格 - 记住,对表格行操作的命令通常对记录也适用。

在GitHub上编辑此页面
Contributors: NotTheDr01ds, fdncred, Hofer-Julian, heinwol, 0x4D5352, joshuanussbaum, Jan Klass, voyage200🍬
Prev
处理列表
Next
处理表格