text: (window.webpackJsonp=window.webpackJsonp||[]).push([[427],{833:function(s,a,e){"use strict";e.r(a);var t=e(44),n=Object(t.a)({},(function(){var s=this,a=s.$createElement,e=s._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[e("h1",{attrs:{id:"处理表"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#处理表"}},[s._v("#")]),s._v(" 处理表")]),s._v(" "),e("p",[s._v("在Nu中查看数据的一种常见方法是通过表格。 Nu 带有许多用于处理表的命令，以方便查找所需的内容以及将数据缩小到所需的范围。")]),s._v(" "),e("p",[s._v("首先，让我们获得一个可用的表：")]),s._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[s._v("> ls\n───┬───────────────┬──────┬─────────┬────────────\n # │ name          │ type │ size    │ modified\n───┼───────────────┼──────┼─────────┼────────────\n 0 │ files.rs      │ File │  4.6 KB │ 5 days ago\n 1 │ lib.rs        │ File │   330 B │ 5 days ago\n 2 │ lite_parse.rs │ File │  6.3 KB │ 5 days ago\n 3 │ parse.rs      │ File │ 49.8 KB │ 1 day ago\n 4 │ path.rs       │ File │  2.1 KB │ 5 days ago\n 5 │ shapes.rs     │ File │  4.7 KB │ 5 days ago\n 6 │ signature.rs  │ File │  1.2 KB │ 5 days ago\n───┴───────────────┴──────┴─────────┴────────────\n")])])]),e("h2",{attrs:{id:"排序"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#排序"}},[s._v("#")]),s._v(" 排序")]),s._v(" "),e("p",[s._v("我们可以调用 "),e("code",[s._v("sort-by")]),s._v(" 命令来给一个表排序并且指定要作为排序依据的列。让我们以文件的大小来进行排序：")]),s._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[s._v("> ls | sort-by size\n───┬───────────────┬──────┬─────────┬────────────\n # │ name          │ type │ size    │ modified\n───┼───────────────┼──────┼─────────┼────────────\n 0 │ lib.rs        │ File │   330 B │ 5 days ago\n 1 │ signature.rs  │ File │  1.2 KB │ 5 days ago\n 2 │ path.rs       │ File │  2.1 KB │ 5 days ago\n 3 │ files.rs      │ File │  4.6 KB │ 5 days ago\n 4 │ shapes.rs     │ File │  4.7 KB │ 5 days ago\n 5 │ lite_parse.rs │ File │  6.3 KB │ 5 days ago\n 6 │ parse.rs      │ File │ 49.8 KB │ 1 day ago\n───┴───────────────┴──────┴─────────┴────────────\n")])])]),e("p",[s._v('我们可以指定任何可以被比较的列来排序。例如，我们可以使用 "name", "accessed" 或 "modified" 列。')]),s._v(" "),e("h2",{attrs:{id:"选取"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#选取"}},[s._v("#")]),s._v(" 选取")]),s._v(" "),e("p",[s._v("我们可以通过选择选择特定的列或特定的行来从表中选择数据。 让我们从表中选择几列来使用：")]),s._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[s._v("> ls | select name size\n───┬───────────────┬─────────\n # │ name          │ size\n───┼───────────────┼─────────\n 0 │ files.rs      │  4.6 KB\n 1 │ lib.rs        │   330 B\n 2 │ lite_parse.rs │  6.3 KB\n 3 │ parse.rs      │ 49.8 KB\n 4 │ path.rs       │  2.1 KB\n 5 │ shapes.rs     │  4.7 KB\n 6 │ signature.rs  │  1.2 KB\n───┴───────────────┴─────────\n")])])]),e("p",[s._v("这有助于创建一个更专注于我们需要的表。 接下来，假设我们只希望查看此目录中最小的 5 个文件：")]),s._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[s._v("> ls | sort-by size | first 5\n───┬──────────────┬──────┬────────┬────────────\n # │ name         │ type │ size   │ modified\n───┼──────────────┼──────┼────────┼────────────\n 0 │ lib.rs       │ File │  330 B │ 5 days ago\n 1 │ signature.rs │ File │ 1.2 KB │ 5 days ago\n 2 │ path.rs      │ File │ 2.1 KB │ 5 days ago\n 3 │ files.rs     │ File │ 4.6 KB │ 5 days ago\n 4 │ shapes.rs    │ File │ 4.7 KB │ 5 days ago\n───┴──────────────┴──────┴────────┴────────────\n")])])]),e("p",[s._v("你会注意到我们先通过大小排序表以获得最小的文件，然后当我们使用了 "),e("code",[s._v("first t")]),s._v(" 后，返回了表中的前 5 行。")]),s._v(" "),e("p",[s._v("你也可以 "),e("code",[s._v("skip")]),s._v(" 不需要的行。让我们跳过上面所得 5 行中的前两行：")]),s._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[s._v("> ls | sort-by size | first 5 | skip 2\n───┬───────────┬──────┬────────┬────────────\n # │ name      │ type │ size   │ modified\n───┼───────────┼──────┼────────┼────────────\n 0 │ path.rs   │ File │ 2.1 KB │ 5 days ago\n 1 │ files.rs  │ File │ 4.6 KB │ 5 days ago\n 2 │ shapes.rs │ File │ 4.7 KB │ 5 days ago\n───┴───────────┴──────┴────────┴────────────\n")])])]),e("p",[s._v("我们已将其缩小为我们关心的三行。")]),s._v(" "),e("p",[s._v("让我们看看其他一些用于选择数据的命令。 您可能想知道为什么表格的行是数字。 这是到达单行的便捷方式。 让我们按文件名对表进行排序，然后使用 "),e("code",[s._v("nth")]),s._v(" 命令使用其行号来选择其中的一行：")]),s._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[s._v("> ls | sort-by name\n───┬───────────────┬──────┬─────────┬────────────\n # │ name          │ type │ size    │ modified\n───┼───────────────┼──────┼─────────┼────────────\n 0 │ files.rs      │ File │  4.6 KB │ 5 days ago\n 1 │ lib.rs        │ File │   330 B │ 5 days ago\n 2 │ lite_parse.rs │ File │  6.3 KB │ 5 days ago\n 3 │ parse.rs      │ File │ 49.8 KB │ 1 day ago\n 4 │ path.rs       │ File │  2.1 KB │ 5 days ago\n 5 │ shapes.rs     │ File │  4.7 KB │ 5 days ago\n 6 │ signature.rs  │ File │  1.2 KB │ 5 days ago\n───┴───────────────┴──────┴─────────┴────────────\n\n> ls | sort-by name | nth 5\n──────────┬────────────\n name     │ shapes.rs\n type     │ File\n size     │ 4.7 KB\n modified │ 5 days ago\n──────────┴────────────\n")])])]),e("h2",{attrs:{id:"获取表格之外的数据"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#获取表格之外的数据"}},[s._v("#")]),s._v(" 获取表格之外的数据")]),s._v(" "),e("p",[s._v("到目前为止，我们已经通过将表格缩小到仅需要的尺寸来处理表格。 有时我们可能想更进一步，只查看单元格本身中的值，而不是整列。 比方说，例如，我们只想获取文件名的列表。 为此，我们使用 "),e("code",[s._v("get")]),s._v(" 命令：")]),s._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[s._v("> ls | get name\n───┬───────────────\n 0 │ files.rs\n 1 │ lib.rs\n 2 │ lite_parse.rs\n 3 │ parse.rs\n 4 │ path.rs\n 5 │ shapes.rs\n 6 │ signature.rs\n───┴───────────────\n")])])]),e("p",[s._v("我们获得了每一个文件的文件名。")]),s._v(" "),e("p",[s._v("容易发现这和 "),e("code",[s._v("select")]),s._v(" 命令很接近，所以让我们在这里对比一下：")]),s._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[s._v("> ls | select name\n───┬───────────────\n # │ name\n───┼───────────────\n 0 │ files.rs\n 1 │ lib.rs\n 2 │ lite_parse.rs\n 3 │ parse.rs\n 4 │ path.rs\n 5 │ shapes.rs\n 6 │ signature.rs\n───┴───────────────\n")])])]),e("p",[s._v("看起来非常像！让我们看看是否可以清楚地说明这两个命令之间的区别：")]),s._v(" "),e("ul",[e("li",[e("code",[s._v("select")]),s._v(" - 创建一个新的包含指定列的表")]),s._v(" "),e("li",[e("code",[s._v("get")]),s._v(" - 以列表形式返回列中的值")])]),s._v(" "),e("p",[s._v("分开看表的一种方法是特征性的 "),e("code",[s._v("value")]),s._v(" 列名，它使我们知道这将是我们可以使用的值的列表。")]),s._v(" "),e("p",[e("code",[s._v("get")]),s._v(" 命令可以更进一步，并在表中更深入地查找数据。 这简化了处理更复杂的数据的工作，例如可以在 .json 文件中找到的结构。")]),s._v(" "),e("h2",{attrs:{id:"修改表中的数据"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#修改表中的数据"}},[s._v("#")]),s._v(" 修改表中的数据")]),s._v(" "),e("p",[s._v("除了从表中选择数据之外，我们还可以更新表中的内容。 我们可能想要添加新列，或编辑单元格的内容。 在 Nu 中，该部分中的每个命令都将在管道中返回一个新表，而不是进行适当的编辑。")]),s._v(" "),e("h3",{attrs:{id:"添加新列"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#添加新列"}},[s._v("#")]),s._v(" 添加新列")]),s._v(" "),e("p",[s._v("我们可以使用 "),e("code",[s._v("insert")]),s._v(" 命令向表中添加新的列，例如：")]),s._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[s._v("> open rustfmt.toml\n─────────┬──────\n edition │ 2018\n─────────┴──────\n")])])]),e("p",[s._v('让我们添加一个名为 "next_edition" 的列并附带 2021 作为值：')]),s._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[s._v("> open rustfmt.toml | insert next_addition 2021\n───────────────┬──────\n edition       │ 2018\n next_addition │ 2021\n───────────────┴──────\n")])])]),e("p",[s._v("注意我们如果打开原始文件，会发现内容没变：")]),s._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[s._v("> open rustfmt.toml\n─────────┬──────\n edition │ 2018\n─────────┴──────\n")])])]),e("p",[s._v("Nu的更改是函数性更改，这意味着它们自己在值上起作用，而不是试图引起永久性更改。 这使我们可以在我们的工作中进行许多不同类型的工作\n直到我们准备好将结果（如果我们愿意的话）进行写出，我们就可以进行流水线处理。 这里我们可以使用 "),e("code",[s._v("save")]),s._v(" 命令写出结果：")]),s._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[s._v("> open rustfmt.toml | insert next_edition 2021 | save rustfmt2.toml\n> open rustfmt2.toml\n───────────────┬──────\n edition       │ 2018\n next_addition │ 2021\n───────────────┴──────\n")])])]),e("h3",{attrs:{id:"更新一列"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#更新一列"}},[s._v("#")]),s._v(" 更新一列")]),s._v(" "),e("p",[s._v("类似 "),e("code",[s._v("insert")]),s._v(" 命令，我们可以使用 "),e("code",[s._v("update")]),s._v(" 命令来用一个新的值更新现存的列。让我们打开同样的文件看看效果：")]),s._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[s._v("> open rustfmt.toml\n─────────┬──────\n edition │ 2018\n─────────┴──────\n")])])]),e("p",[s._v("现在，用我们希望支持的下一个版本更新 edition：")]),s._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[s._v("> open rustfmt.toml | update edition 2021\n─────────┬──────\n edition │ 2021\n─────────┴──────\n")])])]),e("h3",{attrs:{id:"增加值"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#增加值"}},[s._v("#")]),s._v(" 增加值")]),s._v(" "),e("p",[s._v("Nu 支持多个能帮助我们处理数字和版本号的命令如 "),e("code",[s._v("inc")]),s._v(" 。")]),s._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[s._v("> open rustfmt.toml\n─────────┬──────\n edition │ 2018\n─────────┴──────\n> open rustfmt.toml | inc edition\n─────────┬──────\n edition │ 2019\n─────────┴──────\n")])])]),e("p",[s._v('由于 "edition" 中的值是一个数字，我们可以使用 '),e("code",[s._v("inc")]),s._v(" 来更新它。"),e("code",[s._v("inc")]),s._v(" 也可以很好地对版本号进行处理：")]),s._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[s._v("> open Cargo.toml | get package.version\n0.1.3\n> open Cargo.toml | inc package.version --minor | get package.version\n0.2.0\n")])])]),e("p",[s._v("当处理版本时，我们可以使用使用一些标识来说明要增加哪位版本号：")]),s._v(" "),e("ul",[e("li",[e("strong",[s._v("--major")]),s._v(" - 增加主版本号（0.1.3 -> 1.0.0）")]),s._v(" "),e("li",[e("strong",[s._v("--minor")]),s._v(" - 增加次版本号（0.1.3 -> 0.2.0）")]),s._v(" "),e("li",[e("strong",[s._v("--patch")]),s._v(" - 增加补丁版本号（0.1.3 -> 0.1.4）")])])])}),[],!1,null,null,null);a.default=n.exports}}]);