mirror of
https://github.com/danbulant/nushell
synced 2026-06-13 03:32:17 +00:00
Also for 180 degree is expected. Rotation is not exactly like pivoting (transposing)
for instance, given the following table:
```
> echo [[col1, col2, col3]; [cell1, cell2, cell3] [cell4, cell5, cell6]]
───┬───────┬───────┬───────
# │ col1 │ col2 │ col3
───┼───────┼───────┼───────
0 │ cell1 │ cell2 │ cell3
1 │ cell4 │ cell5 │ cell6
───┴───────┴───────┴───────
```
To rotate it counter clockwise by 90 degrees, we can resort to first transposing (`pivot`)
them adding a new column (preferably integers), sort by that column from highest to lowest,
then remove the column and we have a counter clockwise rotation.
```
> echo [[col1, col2, col3]; [cell1, cell2, cell3] [cell4, cell5, cell6]] | pivot | each --numbered { = $it.item | insert idx $it.index } | sort-by idx | reverse | reject idx
───┬─────────┬─────────┬─────────
# │ Column0 │ Column1 │ Column2
───┼─────────┼─────────┼─────────
0 │ col3 │ cell3 │ cell6
1 │ col2 │ cell2 │ cell5
2 │ col1 │ cell1 │ cell4
───┴─────────┴─────────┴─────────
```
Which we can get easily, in this case, by doing:
```
> echo [[col1, col2, cel3]; [cell1, cell2, cell3] [cell4, cell5, cell6]] | rotate counter-clockwise
───┬─────────┬─────────┬─────────
# │ Column0 │ Column1 │ Column2
───┼─────────┼─────────┼─────────
0 │ col3 │ cell3 │ cell6
1 │ col2 │ cell2 │ cell5
2 │ col1 │ cell1 │ cell4
───┴─────────┴─────────┴─────────
```
There are also many powerful use cases with rotation, it makes a breeze creating tables with many columns, say:
```
echo 0..12 | rotate counter-clockwise | reject Column0
───┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬──────────┬──────────┬──────────┬──────────
# │ Column1 │ Column2 │ Column3 │ Column4 │ Column5 │ Column6 │ Column7 │ Column8 │ Column9 │ Column10 │ Column11 │ Column12 │ Column13
───┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼──────────┼──────────┼──────────┼──────────
0 │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 10 │ 11 │ 12
───┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴──────────┴──────────┴──────────┴──────────
```
|
||
|---|---|---|
| .. | ||
| hash_ | ||
| keep | ||
| math | ||
| move_ | ||
| path | ||
| random | ||
| skip | ||
| str_ | ||
| append.rs | ||
| autoenv.rs | ||
| autoenv_trust.rs | ||
| autoenv_untrust.rs | ||
| cal.rs | ||
| cd.rs | ||
| compact.rs | ||
| count.rs | ||
| cp.rs | ||
| def.rs | ||
| default.rs | ||
| drop.rs | ||
| each.rs | ||
| echo.rs | ||
| empty.rs | ||
| enter.rs | ||
| every.rs | ||
| first.rs | ||
| flatten.rs | ||
| format.rs | ||
| get.rs | ||
| group_by.rs | ||
| headers.rs | ||
| histogram.rs | ||
| insert.rs | ||
| into_int.rs | ||
| last.rs | ||
| lines.rs | ||
| ls.rs | ||
| merge.rs | ||
| mkdir.rs | ||
| mod.rs | ||
| nth.rs | ||
| open.rs | ||
| parse.rs | ||
| prepend.rs | ||
| range.rs | ||
| reduce.rs | ||
| rename.rs | ||
| reverse.rs | ||
| rm.rs | ||
| rotate.rs | ||
| save.rs | ||
| select.rs | ||
| semicolon.rs | ||
| sort_by.rs | ||
| split_by.rs | ||
| split_column.rs | ||
| split_row.rs | ||
| touch.rs | ||
| uniq.rs | ||
| update.rs | ||
| where_.rs | ||
| which.rs | ||
| with_env.rs | ||
| wrap.rs | ||