sel
is an inline field selection and table transformation tool
that aims to replace cut
.
Just copy the right executable from the bin
directory into your path.
The sel
tool takes each line from stdin
, splits it into fields, and prints back a selection of those fields.
The simplest use is selecting a single field from a line of columns:
$ echo a b c d e | sel 3
c
Field indices begin at 1
.
You can select multiple fields by passing a list of selectors:
$ echo a b c d e | sel 3 5
c e
The selectors don't have to be in order. You can use sel
to rearrange columns:
$ echo a b c d e | sel 4 1
d a
You can use negative indices to select fields counting from the end:
$ echo a b c d e | sel -1 -3
e c
sel
understands field ranges, in python style:
$ echo "a b c d e" | sel 2:4
b c d
$ echo "a b c d e" | sel 2:-2
b c d
This includes unbounded ranges:
$ echo "a b c d e" | sel 3:
c d e
$ echo "a b c d e" | sel :2
a b
$ echo "a b c d e" | sel :
a b c d e
By default, sel
splits the input on whitespace. It can also use a custom regular expression:
$ cat users.csv
1241,Bob
3192,MitM
3255,Alice
$ cat users.csv | sel -split=, 1
1241
3192
3255
$ echo 1a2b3c4d | sel -split=[a-z] 2:3
2 3
By default, sel
prints selected fields separated by a single space character. You can change this:
$ echo a b c | sel -join=- 2 3
b-c