# => ───┴──────────┴───────────┴───────────
```
That _almost_ looks correct. It looks like there's an extra space there. Let's [`trim`](/commands/docs/str_trim.md) that extra space:
```nu
open people.txt | lines | split column "|" | str trim
# => ───┬─────────┬─────────┬──────────
# => # │ column1 │ column2 │ column3
# => ───┼─────────┼─────────┼──────────
# => 0 │ Octavia │ Butler │ Writer
# => 1 │ Bob │ Ross │ Painter
# => 2 │ Antonio │ Vivaldi │ Composer
# => ───┴─────────┴─────────┴──────────
```
Not bad. The [`split`](/commands/docs/split.md) command gives us data we can use. It also goes ahead and gives us default column names:
```nu
open people.txt | lines | split column "|" | str trim | get column1
# => ───┬─────────
# => 0 │ Octavia
# => 1 │ Bob
# => 2 │ Antonio
# => ───┴─────────
```
We can also name our columns instead of using the default names:
```nu
open people.txt | lines | split column "|" first_name last_name job | str trim
# => ───┬────────────┬───────────┬──────────
# => # │ first_name │ last_name │ job
# => ───┼────────────┼───────────┼──────────
# => 0 │ Octavia │ Butler │ Writer
# => 1 │ Bob │ Ross │ Painter
# => 2 │ Antonio │ Vivaldi │ Composer
# => ───┴────────────┴───────────┴──────────
```
Now that our data is in a table, we can use all the commands we've used on tables before:
```nu
open people.txt | lines | split column "|" first_name last_name job | str trim | sort-by first_name
# => ───┬────────────┬───────────┬──────────
# => # │ first_name │ last_name │ job
# => ───┼────────────┼───────────┼──────────
# => 0 │ Antonio │ Vivaldi │ Composer
# => 1 │ Bob │ Ross │ Painter
# => 2 │ Octavia │ Butler │ Writer
# => ───┴────────────┴───────────┴──────────
```
There are other commands you can use to work with strings:
- [`str`](/commands/docs/str.md)
- [`lines`](/commands/docs/lines.md)
There is also a set of helper commands we can call if we know the data has a structure that Nu should be able to understand. For example, let's open a Rust lock file: