diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2016-07-14 14:13:13 +1200 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2016-07-14 14:13:13 +1200 |
commit | 15fd6da9f5f142453000daf1342354ef265a86cf (patch) | |
tree | 4a732c6804d2c0252d04cf3e964523b53b5fa2e6 | |
parent | Use escape for pagebreak char in rfct(1) (diff) | |
download | dotfiles-15fd6da9f5f142453000daf1342354ef265a86cf.tar.gz dotfiles-15fd6da9f5f142453000daf1342354ef265a86cf.zip |
Add ax(1)
-rw-r--r-- | README.markdown | 2 | ||||
-rwxr-xr-x | bin/ax | 43 | ||||
-rw-r--r-- | man/man1/ax.1 | 15 |
3 files changed, 60 insertions, 0 deletions
diff --git a/README.markdown b/README.markdown index 1beb4e0a..3c1c4acb 100644 --- a/README.markdown +++ b/README.markdown @@ -300,6 +300,8 @@ Installed by the `install-bin` target: * `rfct(1)` formats ASCII RFCs * `rfcr(1)` does both, displaying in a pager if appropriate, like a `man(1)` reader for RFCs +* `ax(1)` evaluates an awk expression given on the command line; intended as + a quick way to test how Awk would interpret a given expression. * `dub(1)` lists the biggest entries in a directory. * `edda(1)` provides a means to run `ed(1)` over a set of files preserving any options, mostly useful for scripts. @@ -0,0 +1,43 @@ +#!/bin/sh + +# ax(1): Evaluate an Awk expression given on the command line with an optional +# format. + +# Usage function +usage() { + printf 'ax: USAGE: ax [format] expression\n' +} + +# Check number of arguments +case $# in + + # If one argument, we assume format is %s + 1) form=%s expr=$1 ;; + + # If two arguments, first is format, second expression + 2) form=$1 expr=$2 ;; + + # Any other number of arguments is wrong + *) + usage >&2 + exit 2 + ;; +esac + +# Give help if requested +case $1 in + -h|--help|-\?) + usage + exit 0 + ;; +esac + +# Form program +prog=$(printf ' + BEGIN { + printf "%s\\n", %s + } +' "$form" "$expr") + +# Run the program +awk "$prog" diff --git a/man/man1/ax.1 b/man/man1/ax.1 new file mode 100644 index 00000000..2e8d7179 --- /dev/null +++ b/man/man1/ax.1 @@ -0,0 +1,15 @@ +.TH AX 1 "July 2016" "Manual page for ax" +.SH NAME +.B ax +\- evaluate an awk expression +.SH SYNOPSIS +.B ax '2.0+3.0' +.br +.B ax %.2f 'sin(2)' +.SH DESCRIPTION +.B ax +evaluates an expression given on the command line with awk(1) and prints its +result using awk's printf, with an optional format specified preceding the +expression. +.SH AUTHOR +Tom Ryder <tom@sanctum.geek.nz> |