fix `detect columns` with flag `-c, --combine-columns` run failed when
using some range
- fixes#9653fix#9653 the cmd detect columns with the flag -c, --combine-columns run
failed when using some range.
add unit test for the command `detect columns`
```text
Attempt to automatically split text into multiple columns.
Usage:
> detect columns {flags}
Flags:
-h, --help - Display the help message for this command
-s, --skip <Int> - number of rows to skip before detecting
-n, --no-headers - don't detect headers
-c, --combine-columns <Range> - columns to be combined; listed as a range
Signatures:
<string> | detect columns -> <table>
Examples:
Splits string across multiple columns
> 'a b c' | detect columns -n
╭───┬─────────┬─────────┬─────────╮
│ # │ column0 │ column1 │ column2 │
├───┼─────────┼─────────┼─────────┤
│ 0 │ a │ b │ c │
╰───┴─────────┴─────────┴─────────╯
Splits a multi-line string into columns with headers detected
> $'c1 c2 c3 c4 c5(char nl)a b c d e' | detect columns
╭───┬────┬────┬────┬────┬────╮
│ # │ c1 │ c2 │ c3 │ c4 │ c5 │
├───┼────┼────┼────┼────┼────┤
│ 0 │ a │ b │ c │ d │ e │
╰───┴────┴────┴────┴────┴────╯
> $'c1 c2 c3 c4 c5(char nl)a b c d e' | detect columns -c 0..1
╭───┬─────┬────┬────┬────╮
│ # │ c1 │ c3 │ c4 │ c5 │
├───┼─────┼────┼────┼────┤
│ 0 │ a b │ c │ d │ e │
╰───┴─────┴────┴────┴────╯
Splits a multi-line string into columns with headers detected
> $'c1 c2 c3 c4 c5(char nl)a b c d e' | detect columns -c -2..-1
╭───┬────┬────┬────┬─────╮
│ # │ c1 │ c2 │ c3 │ c4 │
├───┼────┼────┼────┼─────┤
│ 0 │ a │ b │ c │ d e │
╰───┴────┴────┴────┴─────╯
Splits a multi-line string into columns with headers detected
> $'c1 c2 c3 c4 c5(char nl)a b c d e' | detect columns -c 2..
╭───┬────┬────┬───────╮
│ # │ c1 │ c2 │ c3 │
├───┼────┼────┼───────┤
│ 0 │ a │ b │ c d e │
╰───┴────┴────┴───────╯
Parse external ls command and combine columns for datetime
> ^ls -lh | detect columns --no-headers --skip 1 --combine-columns 5..7
```