CLI program that takes tabular data as input and maps a random command to each input column.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
blob42 3fa4559117
wip column splitting
4 weeks ago
src wip column splitting 4 weeks ago
.gitignore initial commit 4 months ago
Cargo.lock initial commit 4 months ago
Cargo.toml initial commit 4 months ago wip column splitting 4 weeks ago add github protest 4 months ago

Very much work in progress. This is the first project in my Rust learning journey. Expect a lot of changes and refactoring.


Colmap is hybrid between awk in xargs. It borrows from the former its ability to work on tabular columns of text and allows for arbitrary commands to be applied per column in a similar way to xargs.

The columns are called fields. The command to execute on each field is called an x-arg.



         field #1                 field #2
|--------------------------|   |--------------|
/long/path/to/some/ebook.pdf   | Title Of Ebook
example usage:                     \
--------------                      \__________________
colmap --field-1='basename {}'  --field-2="awk { print $1 }"
                                          _________________|: x-arg

colmap -f1 'basename {}' -f2 'awk { print $1 }'

would output: ebook.pdf | Title

  • use colon as delimiter

colmap -d':' -f1 '...'

Ways of passing x-args

  1. passing column x-args as fields
foo_cmd | colmap --field-1='basename {}'  --field-2="awk { print $1 }"
foo_cmd | colmap -f1 'basename {}' -f2 'awk { print $1 }'
  1. Passing an xarg template
foo_cmd | colmap -t 'basename {}' 'awk { print $2 }'

I am using Github under protest


[ ] use non-dashed approach to cli (rwxrob/bonzai)