aboutsummaryrefslogtreecommitdiff
path: root/bin/ax
diff options
context:
space:
mode:
Diffstat (limited to 'bin/ax')
-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"