My ~/.bashrc and others.
.bashrc functions and aliases are as follows.
alias or function | purpose | example | prerequisite |
---|---|---|---|
latest | print the name of the most recently modified file in the current directory | latest | |
listold | list the oldest files over 1GB in current directory | listold | parallel,mawk |
clipboard | pipe text to clipboard | cat foo | clipboard | xclip |
pdf_subset | take a page range from a PDF | pdf_subset in.pdf 23-41 out.pdf | pdftk |
tsv2githubmd | cat foo.tsv | tsv2githubmd | print a TSV as a GitHub flavored markdown table | |
parallel | cat foo | parallel 'echo {}' | make parallel behave like GNU parallel every time | parallel |
tawk | make awk take in TSV and output TSV | cat foo.tsv | tawk '{ print $4,$5 }' | mawk |
pawk | make awk take in pipe separated and output pipe separated | cat foo.txt | pawk '{ print $4,$5 }' | mawk |
theader | print numbered TSV header | cat foo.tsv | theader | |
cheader | print numbered CSV header | cat foo.csv | cheader | |
table2tsv | convert any Gnumeric compatible table to TSV | cat foo.csv | table2tsv | Gnumeric |
table2csv | convert any CSVKit compatible table to CSV | cat foo.tsv | table2csv | csvkit |
sortfreq | print counts of unique values descending | cat foo.tsv | tawk '{ print $4 }' | sortfreq | |
funky_chars | return the count for each unique non-alpha non-digit character in the input | cat foo.tsv | tawk '{ print $4 }' | funky_chars | |
trim | remove leading and trailing whitespace | cat foo | trim | |
round | round numeric field to the nearest n digits | cat foo | round 2 | |
awksum | sum a single numeric field | cat foo.tsv | tawk '{ print $2 }' | awksum | |
col_extra | print records that have content beyond expected number of fields for delimited text | col_extra foo.txt 12 "|" | parallel,mawk |
col_swap | switch the position of two columns in delimited text | cat foo.tsv | col_swap 3 4 | sponge foo.tsv | mawk |
col_sort | use UNIX sort flags (eg -n or -d) to reorder TSV fields | col_sort -n foo.tsv | sponge foo.tsv | mawk,csvkit,table2tsv |
awkcols | format a sequence of numbers as awk columns | cols=$(seq 15 1560 | awkcols ); cat foo.tsv | tawk "{ print $awkcols}" | |
psql_listcols | for a PostgreSQL DB, print a TSV of all table names and their corresponding field names | psql_listcols my_db | parallel,mawk |
find_ext | find all files under current directory with a given extension | find_ext csv | |
url_encode | URL encode text | url_encode 'A&P' | URI::Escape |
url_decode | decode URL encoded text | url_decode 'A%26P' | URI::Escape |
html_encode | HTML encode text | echo '&' | html_encode | HTML::Entities |
html_decode | decode HTML encoded text | echo '&' | html_decode | HTML::Entities |
libretsv | force LibreOffice to open TSV as a table | libretsv foo.tsv | LibreOffice |
dumbplot | use GNUplot to graph a single numeric field | cat foo.tsv | tawk '{ print $4 }' | sed '1d' | dumbplot | gnuplot |
join_multi_w_singleField | print the SQL to join an arbitrary number of tables on a given (identically named) field | join_multi_w_singleField "a b c d e f" project_id | csvkit |
uniqvals | given a TSV, return a TSV with the frequency of all unique values shown for each field | uniqvals foo.tsv | csvlook -t | less | mawk |