A general purpose application that aligns text
The focus of this application is to provide a fast, efficient, and useful tool for aligning text. Its creation is the result of inspiration from several other amazing alignment tools, namely
column or the Sublime Text plugin
See the Wiki for usage examples!
- A simple yet useful CLI with options to specify your delimiter, input and output files, etc.
- Align by any string as your delimiter or separator, not just a single character.
- If your separator string is contained within the data itself, it can be escaped by specifying a text qualifier.
- Right, Center, or Left justification of each field.
Sometimes, it's just easier to align a CSV (or delimited file) by its delimiter and view the columns in your plain text editor (which saves you from opening Excel!).
Another use is to align blocks of code by
$ go get github.com/Guitarbum722/align $ make install $ # build all binaries $ make release
Usage - CLI examples
Usage: align [-h] [-f] [-o] [-q] [-s] [-d] [-a] [-c] [-i] [-p] Options: -h | --help help -f input file. If not specified, pipe input to stdin -o output file. (default: stdout) -q text qualifier (if applicable) -s delimiter (default: ',') -d output delimiter (defaults to the value of sep) -a <left>, <right>, <center> justification (default: left) -c output specific fields (default: all fields) -i override justification by column number (e.g. 2:center,5:right) -p extra padding surrounding delimiter
Specify your input file, output file, delimiter. You can also pipe input to stdin (if the
-f option is provided, it will take precedence over Stdin) If no
-o option is provided, stdout will be used.
$ align -f input_file.csv -o output_file.csv $ align -f input_file.csv -o $ cat awesome.csv | align
Do you have rows with a different number of fields? This might be more common with code, but
align doesn't care!
$ echo "field1|field2\nValue1|Value2\nCoolValue1|CoolValue2|CoolValue3" | align -s \| field1 | field2 Value1 | Value2 CoolValue1 | CoolValue2 | CoolValue3
Column filtering (specifiy output fields and optionally override the justification of the output fields). This might be useful if you would like to display a dollar amount or number field differently. The specified fields are indexed at 1.
# output fields 1,3,5 justified 'right' $ cat file.csv | align -a right -c 1,3,5 # output fields 1,2,3,7,8 with default justification (left) except for field 7, which is right justified $ cat file.csv | align -c 1,2,3,7,8 -i 1:right,7:center #output all fields by default, with right justification, with overridden justification on certain columns $ cat file.csv | align -a right -i 1:center,5:left
Support for worldwide characters.
first , last , middle , email paul , danny , かど , や製油
It is perfectly acceptable to even use emojis as your input/output delimiters.
first 😮 last 😮 email Hector 😮 Gonzalez 😮 [email protected]
Add additional padding if desired with the
-p flag. Default is 1 space, and 0 will output with no additional padding. If the value supplied is less than 0, then the behavior will be as if it were set to 0 and no padding will be applied.
# padding of 4 spaces surrounding the delimiter. align -p 4
If you have suggestions or discover a bug, please open an issue. If you think you can make the fix, please use the Fork / Pull Request on your feature branch approach.