These are some simple bash functions and scripts for making CSV/TSV files prettier on the command line
see http://stefaanlippens.net/pretty-csv.html for more information.
These are some simple bash functions and scripts for making CSV/TSV files prettier on the command line
see http://stefaanlippens.net/pretty-csv.html for more information.
##################################################### | |
# Bash functions to put in .bashrc or .bash_aliases # | |
##################################################### | |
# For Debian/Ubuntu | |
function pretty_csv { | |
column -t -s, -n "$@" | less -F -S -X -K | |
} | |
function pretty_tsv { | |
column -t -s $'\t' -n "$@" | less -F -S -X -K | |
} | |
# For non-Debian systems | |
function pretty_csv { | |
perl -pe 's/((?<=,)|(?<=^)),/ ,/g;' "$@" | column -t -s, | less -F -S -X -K | |
} | |
function pretty_tsv { | |
perl -pe 's/((?<=\t)|(?<=^))\t/ \t/g;' "$@" | column -t -s $'\t' | less -F -S -X -K | |
} |
#!/bin/bash | |
perl -pe 's/((?<=,)|(?<=^)),/ ,/g;' "$@" | column -t -s, | exec less -F -S -X -K |
#!/bin/bash | |
perl -pe 's/((?<=\t)|(?<=^))\t/ \t/g;' "$@" | column -t -s $'\t' | exec less -F -S -X -K |
Thanks, great stuff.
I have commas inside string fields like this:
a,b,c
4207416,"[0,9,3,3,0,0,0,0,0,0]",56.0
So threw in an awk to replace separators outside strings to semicolons ( using @John1024's answer ):
function pretty_csv {
perl -pe 's/((?<=,)|(?<=^)),/ ,/g;' "$@" \
| awk -F\" '{for (i=1; i<=NF; i+=2) gsub(/,/,";",$i)} 1' OFS='"' \
| column -t -s';' \
| less -F -S -X -K
}
which results in:
a b c
4207416 "[0,9,3,3,0,0,0,0,0,0]" 56.0
Just grabbed your script. It's very nice. Thanks for sharing.