And now, let's update the edition to point at the next edition we hope to support:
```nu
open rustfmt.toml | update edition 2021
# => ─────────┬──────
# => edition │ 2021
# => ─────────┴──────
```
You can also use the [`upsert`](/commands/docs/upsert.md) command to insert or update depending on whether the column already exists.
### Moving Columns
You can use [`move`](/commands/docs/move.md) to move columns in the table. For example, if we wanted to move the "name" column from [`ls`](/commands/docs/ls.md) after the "size" column, we could do:
```nu
ls | move name --after size
# => ╭────┬──────┬─────────┬───────────────────┬──────────────╮
# => │ # │ type │ size │ name │ modified │
# => ├────┼──────┼─────────┼───────────────────┼──────────────┤
# => │ 0 │ dir │ 256 B │ Applications │ 3 days ago │
# => │ 1 │ dir │ 256 B │ Data │ 2 weeks ago │
# => │ 2 │ dir │ 448 B │ Desktop │ 2 hours ago │
# => │ 3 │ dir │ 192 B │ Disks │ a week ago │
# => │ 4 │ dir │ 416 B │ Documents │ 4 days ago │
# => ...
```
### Renaming Columns
You can also [`rename`](/commands/docs/rename.md) columns in a table by passing it through the rename command. If we wanted to run [`ls`](/commands/docs/ls.md) and rename the columns, we can use this example:
```nu
ls | rename filename filetype filesize date
# => ╭────┬───────────────────┬──────────┬──────────┬──────────────╮
# => │ # │ filename │ filetype │ filesize │ date │
# => ├────┼───────────────────┼──────────┼──────────┼──────────────┤
# => │ 0 │ Applications │ dir │ 256 B │ 3 days ago │
# => │ 1 │ Data │ dir │ 256 B │ 2 weeks ago │
# => │ 2 │ Desktop │ dir │ 448 B │ 2 hours ago │
# => │ 3 │ Disks │ dir │ 192 B │ a week ago │
# => │ 4 │ Documents │ dir │ 416 B │ 4 days ago │
# => ...
```
### Rejecting/Deleting Columns
You can also [`reject`](/commands/docs/reject.md) columns in a table by passing it through the reject command. If we wanted to run [`ls`](/commands/docs/ls.md) and delete the columns, we can use this example:
```nu
ls -l / | reject readonly num_links inode created accessed modified
# => ╭────┬────────┬─────────┬─────────┬───────────┬──────┬───────┬────────╮
# => │ # │ name │ type │ target │ mode │ uid │ group │ size │
# => ├────┼────────┼─────────┼─────────┼───────────┼──────┼───────┼────────┤
# => │ 0 │ /bin │ symlink │ usr/bin │ rwxrwxrwx │ root │ root │ 7 B │
# => │ 1 │ /boot │ dir │ │ rwxr-xr-x │ root │ root │ 1.0 KB │
# => │ 2 │ /dev │ dir │ │ rwxr-xr-x │ root │ root │ 4.1 KB │
# => │ 3 │ /etc │ dir │ │ rwxr-xr-x │ root │ root │ 3.6 KB │
# => │ 4 │ /home │ dir │ │ rwxr-xr-x │ root │ root │ 12 B │
# => │ 5 │ /lib │ symlink │ usr/lib │ rwxrwxrwx │ root │ root │ 7 B │
# => │ 6 │ /lib64 │ symlink │ usr/lib │ rwxrwxrwx │ root │ root │ 7 B │
# => │ 7 │ /mnt │ dir │ │ rwxr-xr-x │ root │ root │ 0 B │
# => ...
```
### The # Index Column
You've noticed that every table, by default, starts with a column with the heading `#`. This column can operate in one of two modes:
1. Internal #
- The default mode
- Nushell provides a 0-based, consecutive index
- Always corresponds to the cell-path row-number, where `select 0` will return the first item in the list, and `select <n-1>` returns the nth item
- Is a display of an internal representation only. In other words, it is not accessible by column name. For example, `get index` will not work, nor `get #`
1. "Index"-Renamed #
- When a column named "index" is created, either directly or as a side-effect of another command, then this `index` column takes the place of the `#` column in the table display. In the table output, the column header is still `#`, but the _name_ of the column is now `index`.
Example: