aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2016-07-14 14:13:13 +1200
committerTom Ryder <tom@sanctum.geek.nz>2016-07-14 14:13:13 +1200
commit15fd6da9f5f142453000daf1342354ef265a86cf (patch)
tree4a732c6804d2c0252d04cf3e964523b53b5fa2e6 /bin
parentUse escape for pagebreak char in rfct(1) (diff)
downloaddotfiles-15fd6da9f5f142453000daf1342354ef265a86cf.tar.gz
dotfiles-15fd6da9f5f142453000daf1342354ef265a86cf.zip
Add ax(1)
Diffstat (limited to 'bin')
-rwxr-xr-xbin/ax43
1 files changed, 43 insertions, 0 deletions
diff --git a/bin/ax b/bin/ax
new file mode 100755
index 00000000..3840acf5
--- /dev/null
+++ b/bin/ax
@@ -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"